如何以編程方式註冊偵聽「PACKAGE_ADDED」操作的BroadcastReceiver?我正在嘗試安裝軟件包後執行某些操作。我可以通過在AndroidManifest.xml中註冊接收器來實現它,但我需要通過以編程方式註冊它的方式使其以另一種方式工作,以便它只在通過我的應用程序安裝的.apks上調用。我已經嘗試了幾種不同的方法,下面的代碼是從這個答案https://stackoverflow.com/a/4805733/1024722,但它不起作用。有任何想法嗎?如何以編程方式使用BroadCastReceiver
private BroadcastReceiver receiver;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
ButterKnife.inject(this);
intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("test", "received");
}
};
registerReceiver(receiver, intentFilter);
}
編輯:在我的應用程序的活動,我點擊一個按鈕來從服務器上下載的應用程序,然後安裝它我單擊通知欄下載的應用程序。然後介紹了這個畫面:
我點擊「安裝」,並將其安裝,但不叫我的onReceive方法(除非我在XML註冊的話)。然後,它顯示了這個畫面:
然後我點擊「完成」,並返回給我的活動與「安裝」按鈕。我想知道它是不是工作,因爲它啓動屏幕截圖中顯示的活動,因此無法在我的接收器中調用onReceive方法,因爲我的活動的onPause方法已被調用,並且不再「活動」,直到我單擊完成,這是在「PACKAGE_ADDED」操作被調用之後。
該代碼是正確的。我正在使用這樣的工作,並且工作正常。你是如何測試它的? – 2014-10-19 19:24:12
我運行了我的應用程序,然後安裝了一個包,我的onReceive方法從未被調用過。但是,當我在我的AndroidManifest中註冊接收器時,它會被調用 – theDazzler 2014-10-19 19:26:08