但是,我们如何识别接收者是否是隐性的呢?
如果
Intent
有一个
ComponentName
是明确的。否则,它是隐含的。
可以通过以下几种方式之一获得:
-
它可以直接放在
意图
new Intent(this, TheReallyAwesomeReceiver.class
)
-
它可以直接放在
意图
使用后
PackageManager
queryIntentReceivers()
-
它可以由系统从动作字符串等加上通过定义的包派生
setPackage()
我们是否应该只查看“action”标签,并查看它是否被列入白名单以将其保留在清单中?
任何
例如,“com.android.vending.INSTALL\u referer”的意图没有被列入白名单。我们应该在活动中注册吗?
不会。该广播只会发送到最近安装的应用程序,因此它必须是显式的
意图
将其与
ACTION_PACKAGE_ADDED
. 广播给任何注册接收器;它不仅仅是一个特定的应用程序。因此
必须是隐式的(否则它将具有
组件名称
添加了ACTION\u PACKAGE\u