解決Android8廣播的靜態註冊接收不到問題
阿新 • • 發佈:2019-01-08
最近在學習Android,因為學校的書本是13年的(無力吐槽),那時Android才4.3太老了,現在都Android9了,有些技術已經改變了,不再適用於現在的Android版本,在寫書上的示例程式碼時遇到了這個問題,通過網上的搜尋和在官網看到的介紹解決了這個問題。具體是因為Android8在靜態廣播的使用上進行了限制。
解決辦法:
1、使用動態廣播代替靜態廣播,例如:
IntentFilter filter=new IntentFilter("music"); Broadcast mBroadcast =new Broadcast(); registerReceiver(mBroadcast,filter);
2、依舊使用靜態廣播,但是在傳送廣播的Intent裡新增Component引數,例如:
intent2=new Intent();
intent2.setAction("music");
intent2.putExtra("key","方法2");
intent2.setComponent(new ComponentName
("com.example.dream.ex5_3",
"com.example.dream.ex5_3.Broadcast"));
sendBroadcast(intent2);
ComponentName的第一個引數是廣播接收器的包名,第二個引數是廣播接收器的路徑(也就是包名加廣播接收器的類名)。