Android: Менеджер загрузок

#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 здесь