Android 8放送の静的登録が受信できない問題を解決
937 ワード
最近Androidを勉強しています.学校の本は13年なので(ツッコミができません)、その時Androidは4.3歳で年を取っていましたが、今はAndroid 9になっています.一部の技術は変わり、現在のAndroidバージョンには適さなくなりました.本のサンプルコードを書くときにこの問題に遭遇し、ネット上の検索と公式サイトで見た紹介でこの問題を解決しました.具体的にはAndroid 8が静態放送の利用を制限しているからです.
詳細は次のとおりです.https://developer.android.google.cn/about/versions/oreo/background
解決策:
1.静的放送の代わりに動的放送を使用する.例えば:
2、依然として静的放送を使用するが、放送を送信するIntentにComponentパラメータを追加する.例えば:
ComponentNameの最初のパラメータは、ブロードキャスト受信機のパケット名であり、2番目のパラメータは、ブロードキャスト受信機のパス(すなわち、パケット名とブロードキャスト受信機のクラス名)である.
詳細は次のとおりです.https://developer.android.google.cn/about/versions/oreo/background
解決策:
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の最初のパラメータは、ブロードキャスト受信機のパケット名であり、2番目のパラメータは、ブロードキャスト受信機のパス(すなわち、パケット名とブロードキャスト受信機のクラス名)である.