我想声明一个广播接收器,例如,它可以收听PACKAGE_ADDED
,PACKAGE_REPLACED
之类的系统广播。
<receiver
android:name="com.sample.cli.xyz.XyzReceiver"
android:exported="true"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<action android:name="android.intent.action.PACKAGE_REPLACED"/>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
</intent-filter>
</receiver>
如果我在此处保留exported="true"
,则任何应用都可以发送广播,这可能是安全问题。根据Android文档,如果在接收器标签中甚至有1个意图过滤器,则默认导出的值被视为“ true”。
我的问题是,如果我将这个属性与意图过滤器一起明确声明为“ false”(android:exported="false"
),是否会使它更安全并且只能由系统而不是其他应用程序访问?
答案 0 :(得分:0)
在示例应用程序中尝试了有问题的组合(exported =“ false”以及在接收方声明的intent过滤器),发现接收方仍然可以收听系统事件,例如PACKAGE_ADDED,PACKAGE_REMOVED等。