Android权限限制INSTALL_REFERRER来播放商店

时间:2017-02-07 00:52:25

标签: android android-intent

我正在使用自定义分析(而不是谷歌分析)设置广告系列跟踪,并为此设置接收器。我的接收器似乎正在工作,但是当我安装时,我得到一个android lint警告:

ExportedReceiver: Receiver does not require permission

看起来任何旧的Android应用程序都可以使用我不想要的com.android.vending.INSTALL_REFERRER意图来调用我的应用程序。它应该只是Google Play商店(或任何其他可以从Play商店安装我的应用程序的Android系统应用程序)将该意图发送到我的应用程序。

所以我试图找出如何设置限制有效应用程序到Play商店的权限,但我无法根据文档找出设置权限的正确方法:

https://developer.android.com/guide/topics/manifest/permission-element.html

有人可以帮我设置一个权限,限制我的应用程序将这个意图接受到Play商店的应用程序吗?这是我当前的接收器配置:

    <receiver
            android:name=".referrals.MyCampaignTrackingReceiver"
            android:enabled="true"
            android:exported="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER"/>
        </intent-filter>
    </receiver>

我尝试在normal级别为接收者设置权限,但这阻止了应用从Playstore接收意图。

3 个答案:

答案 0 :(得分:3)

您需要在接收器上设置android:permission属性。所以它看起来像这样:

<receiver
        android:name=".referrals.MyCampaignTrackingReceiver"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.CLEAR_APP_CACHE">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER"/>
    </intent-filter>
</receiver>

此处使用"android.permission.CLEAR_APP_CACHE"是任意的,您可以使用Play商店拥有且不可能的任何权限供第三方应用使用(因为CLEAR_APP_CACHE s保护级别为system|signature,仅使用与声明此权限的应用程序相同的证书签署系统应用程序或应用程序;在本例中为平台)。例如,looking through Play商店的清单显示,"com.android.vending.permission.C2D_MESSAGE"可能是另一个好的候选人。

希望这有帮助。

答案 1 :(得分:2)

INSTALL_REFERRER广播许可不是一个很大的问题。假设你知道你只需要在安装后立即处理这个广播一次,并且你只采取措施处理它一次,攻击者必须知道你的应用程序何时安装并以某种方式在playstore app之前发送这个广播不可能的。

答案 2 :(得分:0)

第三方应用程序无法广播此意图。它被阻止了。并且发送权限仅授予系统应用程序。 enter image description here enter image description here