我正在使用两种方法跟踪我的安装,就像您在我的 list 中看到的那样:
<receiver
android:name="com.google.android.gms.tagmanager.InstallReferrerReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<receiver
android:name=".tracking.ReferralReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
第二个接收器生成一个 lint 警告第一个不是。这是否意味着 Google 知道他们的 InstallReferrerReceiver
并且知道让它导出是安全的?
PS:我知道我可以使用 tools:ignore="ExportedReceiver"
。
最佳答案
INSTALL_REFERRER
当从 Google Play 商店安装应用程序时广播 Intent 。
android:exported="true"
意味着允许接收器接收来自其他应用程序的广播 Intent 。你确实想要这个,否则你将无法接收到由另一个应用程序(系统或 Play 商店应用程序,我不确定)发送的事件。
但是,如果您查看 android:exported
的文档,如果它至少有一个 <intent-filter>
,它的默认值为 true , 否则为假。
所以综上所述,你需要android:exported="true"
catch 事件。但省略此属性也可以,因为默认值为 true
为您的接收器(但拥有它更安全)。
关于 Lint 警告:它识别名称,这就是它知道第一个版本是安全的原因。
关于android - 安装跟踪是否需要导出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34761904/