Android8 自定義廣播接收不到的問題

very_on發表於2018-06-21

1. 問題的前提:本人維護的一個應用是通過按鍵傳送一個自定義廣播,然後拉起服務。原來專案開發是在Android6,將該應用安裝到Android7系統上面可正常使用,但是安裝到Android8上面,死活收不到廣播。通過百度參考了兩篇文章(文章最後加備註),做了以下總結:

2.原因:Android8在靜態廣播的使用上做了一些限制具體可檢視:https://developer.android.google.cn/about/versions/oreo/android-8.0.html

3. 解決辦法:

(1)使用動態廣播代替靜態廣播,具體可參考部落格1。

(2)保留原來的靜態廣播,但是加入Component引數,具體可參考部落格2。

我使用的是解決方式2(寫了demo測試了一下),在必須要使用自定義靜態廣播的時候可採用這個方法,傳送廣播時加入ComponentName,引數1是自定義廣播的包名,引數2是自定義廣播的路徑:
[java] view plain copy
  1. Intent it = new Intent("com.hisense.test.broadcast");  
  2. it.setComponent(new ComponentName("com.example.broadcasttest",  
  3.                         "com.example.broadcasttest.MyBroadcast"));  
  4. sendBroadcast(it);  

相關文章