活动导出的在活动选择器=假上市(Activity exported=false listed in

2019-07-05 09:26发布

我有两个类似的应用程序(一个免费,一个付费)。

的活性与定义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>

当我打电话startActivity从免费应用进行相应隐含的意图,会出现活动选择器。

我不明白为什么从付费应用程序的活动出现,因为它是exported="false"

我想我可以根据网址添加一个意图过滤器,但我的问题是:为什么从其他应用程序不活动时,文档读取出现

无论活性可以通过其他应用程序的组件启动

Answer 1:

我不明白为什么从付费应用程序的活动出现,因为它是出口=“假”

因为你有一个匹配的<intent-filter> 。 既然你不需要<intent-filter>对于非出口活动,直接删除它,并使用一个明确的Intent开始这个活动时。

为什么当文档读取来自其他应用程序的活动出现...

我有同样的问题 ,被告知这是预期的行为,该bug是在我们的应用程序对具有无用<intent-filter> 。 引述戴安娜Hackborn:

我一般会认为这在应用程序中的错误 - 如果你有,你是不是允许其他应用程序推出的活动,为什么赫克你发布的意图过滤器,他们将匹配尝试推出? 该活动的安全性(无论是不是出口或需要权限)不是意图匹配的一部分。 ......这种情况下(发布符合意图的其他应用程序将使用一个活动,但随后限制它不会对其他应用程序被启动的)是不是如果不彻底破碎有用。



文章来源: Activity exported=false listed in activity chooser