rds*_*rds 4 android android-manifest android-intent android-activity android-implicit-intent
我有两个类似的应用程序(一个免费,一个付费).
活动定义为 exported="false"
<activity
android:name=".MyActivity"
android:exported="false"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/vnd.mine" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
当我startActivity使用免费应用程序中的相应隐含意图调用时,将显示活动选择器.
我不明白为什么付费应用程序的活动会出现,因为它是 exported="false"
我想我可以添加基于URL的intent过滤器,但我的问题是:为什么当doc读取时,来自其他应用程序的活动会出现
是否可以由其他应用程序的组件启动该活动
我不明白为什么来自付费应用的活动出现,因为它被导出="false"
因为你有匹配<intent-filter>.由于您不需要<intent-filter>用于非导出活动,因此只需删除它并Intent在启动此活动时使用显式.
当文档读取时,为什么来自其他应用程序的活动会出现...
我有同样的问题,并被告知这是预期的行为,并且我们的应用程序中的错误是无用的<intent-filter>.引用Dianne Hackborn:
我通常认为这是应用程序中的一个错误 - 如果你有一个活动,你不允许其他应用程序启动,为什么你发布一个他们将匹配尝试启动的意图过滤器?活动的安全性(无论是未导出还是需要权限)不是意图匹配的一部分....这种情况(发布一个与其他应用程序将使用的意图相匹配的活动,但后来将其限制为不能由其他应用程序启动)在没有完全破坏的情况下是没有用的.
| 归档时间: |
|
| 查看次数: |
5196 次 |
| 最近记录: |