1. 程式人生 > >解決Android8廣播的靜態註冊接收不到問題

解決Android8廣播的靜態註冊接收不到問題

最近在學習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的第一個引數是廣播接收器的包名,第二個引數是廣播接收器的路徑(也就是包名加廣播接收器的類名)。