2011-05-12 98 views
2

我想實現一個解決方案,我希望從Android Market應用程序中捕獲android.intent.action.DOWNLOAD_COMPLETED意圖,即下載應用程序之後。 Android Market應用程序使用默認的下載管理器和完成下載的下載管理器發送這樣的意圖,但是我一直無法捕獲它,我跟着this tutorial請參閱this以獲得更多關於市場應用程序使用下載管理器,有關下載管理器的更多信息,請參閱this。請建議我採取一種方法來抓住這些意圖。Android:下載管理器

編輯 這是我在用我的廣播Reciever

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

應該工作,只要您在清單中聲明BroadcastReceiver。你應該發佈你的代碼。 – 2011-05-12 07:56:22

回答

8

除了意圖過濾器中操作的名稱之外,您已經擁有了一切權利。需要注意的DOWNLOAD_COMPLETEDDOWNLOAD_COMPLETE代替

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

這爲我工作。您無需在代碼中註冊接收器,即使您的應用程序未運行,也會收聽。

1

先註冊reciever

registerReceiver(onComplete, 
new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); 

,並設置BroadcastReciever捕獲事件。

BroadcastReceiver onComplete=new BroadcastReceiver() { 
     public void onReceive(Context ctxt, Intent intent) { 
      // run your action here 
     } 
    }; 
+0

是的,但我仍然無法捕捉廣播 – hassanadnan 2011-05-26 07:40:59

+0

你使用DownloadManager()下載?另外,如果您在DownloadManager()上開發構建,那麼您將自己限制爲2.3版,您可能需要考慮使用AsyncTask,因此您可以在後臺下載,並且將在2.2中受支持 – 2011-05-26 08:56:26

0

可能的接收者聲明的優先級低於爲市場應用程序註冊的優先級。嘗試使用IntentFilter.setPriority()或聲明XML上的優先級here