Активность экспортирована = в списке выбора активности указано значение false
У меня есть два похожих приложения (одно бесплатное, одно платное).
Активность определяется с 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"
Я предполагаю, что могу добавить фильтр намерений на основе URL, но мой вопрос: почему активность из другого приложения появляется, когда документ читает
Может ли действие быть запущено компонентами других приложений
1 ответ
Я не понимаю, почему появляется активность из платного приложения, так как она экспортируется ="ложь"
Потому что у вас есть соответствующий <intent-filter>
, Так как вам не нужно <intent-filter>
для неэкспортированной деятельности просто удалите ее и используйте явный Intent
при запуске этой деятельности.
почему активность из другого приложения появляется, когда документ читает...
У меня был тот же вопрос, и мне сказали, что это ожидаемое поведение, и ошибка в нашем приложении из-за бесполезного <intent-filter>
, Цитируя Дайан Хэкборн:
Я бы вообще считал это ошибкой в приложении - если у вас есть действие, которое вы не позволяете запускать другим приложениям, какого черта вы публикуете фильтр намерений, который они будут пытаться запустить? Безопасность действия (независимо от того, экспортируется ли оно или требует разрешения) не является частью соответствия намерений.... этот сценарий (публикация действия, которое соответствует намерениям, которые будут использовать другие приложения, но затем ограничение его на невозможность запуска другими приложениями) бесполезен, если не полностью нарушен.