Не устанавливайте Android Market INSTALL_REFERRER на Android 3.x - PullRequest
6 голосов
/ 08 августа 2011

Я реализовал BroadcastReceiver для Android Market INSTALL_REFERRER Intent as описано здесь:

Получить реферер после установки приложения из Android Market

Отлично работает на устройствах с Android более ранних, чем 3.0, но никогда не срабатывает на сотовых устройствах. Я проверил вывод logcat во время установки и после первого запуска приложения, и я не вижу никаких выводов отладки, что наводит меня на мысль, что BroadcastReceiver не запускается (я вижу вывод на предварительном Honeycomb версии).

Кто-нибудь может подтвердить эту проблему?

Есть идеи, как заставить это работать?

Ответы [ 2 ]

4 голосов
/ 15 декабря 2011

В 3.1 есть новый флаг с именем FLAG_EXCLUDE_STOPPED_PACKAGES:

Если установлено, это намерение не будет соответствовать ни одному из компонентов в пакетах, которые в данный момент остановлены. Если это не установлено, то поведение по умолчанию заключается в том, чтобы включать такие приложения в результат.

Из примечаний к выпуску для версии 3.1 :

Обратите внимание, что система добавляет FLAG_EXCLUDE_STOPPED_PACKAGES ко всем вещательным намерениям.

А также:

Приложения находятся в остановленном состоянии, когда они впервые установлены, но еще не запущены и когда они вручную остановлены пользователем (в Управлении приложениями).

Похоже, что это нарушает поведение INSTALL_REFERRER на устройствах 3.1+, так как ваше приложение еще не запущено и поэтому не может принимать трансляцию. К сожалению, я не знаю, как это сделать. Google, вероятно, мог бы сделать что-то, чтобы исправить это в своем приложении Market (один из способов - просто использовать FLAG_INCLUDE_STOPPED_PACKAGES, хотя я не уверен, что это будет отличная идея, учитывая весь смысл этих новых запусков управления).

1 голос
/ 18 октября 2012

Когда я понял, что Broadcast Intent * INSTALL_REFERRER * запускается один раз перед Приложение запускается в первый раз Если вы его не поймете, вы никогда его не получите еще раз

...