安装跟踪是否需要导出?

Install tracking needs to been exported or not?

我正在使用两种方法跟踪我的安装,就像您在我的清单中看到的那样:

<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"

当从 Google Play 商店安装应用程序时,会广播 INSTALL_REFERRER 意图。 android:exported="true" 表示允许接收方接收来自其他应用程序的广播意图。你确实想要这个,否则你将无法收到另一个应用程序(系统或 Play 商店应用程序,我不确定)发送的事件。

但是,如果您查看 android:exported 的文档,如果它至少有一个 <intent-filter>,则其默认值为 true,否则为 false。

综上所述,您需要 android:exported="true" 才能赶上活动。但是省略这个 属性 也可以,因为你的接收器的默认值是 true (但拥有它更安全)。

关于 Lint 警告:它识别名称,这就是为什么它知道第一个版本是安全的。