Установить отслеживание нужно было экспортировать или нет?

Я отслеживаю мои установки двумя способами, которые вы можете увидеть здесь в моем манифесте:

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

Второй получатель генерирует предупреждение о пуховке, а первый нет. Означает ли это, что Google знает, что для их InstallReferrerReceiver и знаете, что это безопасно для экспорта?

PS: я знаю, что могу использовать tools:ignore="ExportedReceiver",

1 ответ

Решение

INSTALL_REFERRER намерение транслируется при установке приложения из магазина Google Play.android:exported="true" означает, что получателю разрешено получать широковещательные намерения из других приложений. Вы этого хотите, иначе вы не сможете получить событие, отправленное другим приложением (я не уверен, что это приложение или система Play Store).

Однако, если вы проверите документацию для android:exportedего значение по умолчанию равно true, если оно имеет хотя бы один <intent-filter>иначе это ложно.

Итак, чтобы подвести итог, вам нужно android:exported="true" чтобы поймать событие. Но пропустить это свойство тоже можно, так как значение по умолчанию true для ваших получателей (но безопаснее иметь его).

О предупреждении Lint: он распознает имя, и поэтому он знает, что первая версия безопасна.

Другие вопросы по тегам