#android #google-play
#Android #google-play (поиск в Google Play) #google-play
Вопрос:
Я хочу реализовать решение, в котором я хочу уловить android.intent.action.DOWNLOAD_COMPLETED
намерения из приложения Android Market, то есть после загрузки приложения. Приложение Android Market использует менеджер загрузок по умолчанию, и менеджер загрузок по завершении загрузки отправляет такое намерение, однако мне не удалось его зафиксировать, я следовал этому руководству и, пожалуйста, обратитесь к этому, чтобы получить более подробную информацию о том, как приложение market использует менеджер загрузок, а для получения дополнительной информации о диспетчере загрузок обратитесь к этому. Пожалуйста, предложите мне способ уловить эти намерения.
РЕДАКТИРОВАТЬ Это то, что я использую для своего широковещательного приемника
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER">
</uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver
android:name=".DownloadReceiver"
android:permission="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS"
android:exported="true">
<intent-filter>
<action
android:name="android.intent.action.DOWNLOAD_COMPLETED">
</action>
</intent-filter>
</receiver>
</application>
Комментарии:
1. Должно сработать, при условии, что вы объявите BroadcastReceiver в своем манифесте. Вы должны опубликовать свой код.
Ответ №1:
У вас все правильно, за исключением названия действия в фильтре намерений. Обратите внимание на DOWNLOAD_COMPLETE
вместо DOWNLOAD_COMPLETED
<receiver
android:name=".DownloadReceiver"
android:exported="true"
android:icon="@drawable/download_icon" >
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
</intent-filter>
</receiver>
У меня это сработало. Вам не нужно регистрировать приемник в коде, он будет прослушиваться, даже если ваше приложение не запущено.
Ответ №2:
Сначала зарегистрируйте получателя
registerReceiver(onComplete,
new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
И установите BroadcastReciever для записи события.
BroadcastReceiver onComplete=new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
// run your action here
}
};
Комментарии:
1. Да, но я все еще не могу поймать трансляцию
2. загружаете ли вы с помощью DownloadManager ()? Кроме того, если вы разрабатываете на основе DownloadManager (), вы ограничиваетесь версией 2.3, возможно, вам захочется рассмотреть возможность использования AsyncTask, чтобы вы могли загружать в фоновом режиме и поддерживались в 2.2
Ответ №3:
Вероятно, ваш приемник объявлен с более низким приоритетом, чем у зарегистрированного в Market приложения. Попробуйте использовать IntentFilter.setPriority() или объявите приоритет для XML здесь