Bra*_*rad 36 android uri intentfilter
我正在尝试使用此SO问题作为参考从URI启动Android应用程序.
我有一个清单文件,其中包含以下声明的活动:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" android:host="example.com" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用http://example.com链接启动MainActivity .我的问题是我得到了警告
"exported activity does not require permission"
Run Code Online (Sandbox Code Playgroud)
我已经查看了报告此相同警告的其他SO问题,并且所有解决方案似乎都不起作用.
如何正确编写活动intent-filter以避免警告?
谢谢
Shi*_*ine 91
当我将SDK更新到版本20时,我遇到了同样的问题.我删除它添加android: exports propery:
<activity
android:name=".MainActivity"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" android:host="example.com" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
在清单中的活动声明中.当然,如果活动仅供应用程序内部使用,您可以指定此项
修复它的原因可以在docs上找到:
android:exported:默认值取决于活动是否包含intent过滤器.缺少任何过滤器意味着只能通过指定其确切的类名来调用活动.这意味着该活动仅供应用程序内部使用(因为其他人不知道类名).所以在这种情况下,默认值为"false".另一方面,至少有一个过滤器的存在意味着该活动旨在供外部使用,因此默认值为"true".
由于"导出的接收器不需要许可"(至少LINT消息是清楚的),你得到它.
cle*_*roo 40
您是否尝试清理项目(项目>清洁......)?它为我的项目修复了这个警告,也许是你的.
whi*_*cko 18
要摆脱这个警告,你有两个选择:
android:exported="false"在"活动"上设置属性,以防止其他应用通过意图调用您的"活动"android:permission属性,您可以在其中指定应用程序需要具有哪些权限才能调用您的活动.您可以在Android文档中获得更多信息.
感谢@furykid的链接.
| 归档时间: |
|
| 查看次数: |
32348 次 |
| 最近记录: |