17

このようにアクティビティで放送受信機を登録すると、

@Override
protected void onResume() {
    super.onResume();

    myReceiver = new BroadcastReceiver() { ... };
    IntentFilter filter = new IntentFilter("com.example.MY_ACTION");
    registerReceiver(myReceiver, filter);
}

この受信機は輸出されていますか? 別のアプリが をブロードキャストした場合com.example.MY_ACTION、 はそれを受信しmyReceiverますか?

そうであれば、文字列のアクセス許可を受け入れる形式を使用する必要があると想定registerReceiver()し、マニフェストでそのアクセス許可を定義して、高い保護レベル (署名など) を与えます。あれは正しいですか?もっと簡単な方法はありますか?

4

2 に答える 2

2

BroadcastReceiver APIのAPIドキュメントから:

アプリケーション間でブロードキャストを送信する必要がない場合は、以下で説明するより一般的な機能の代わりに、LocalBroadcastManagerでこのクラスを使用することを検討してください。これにより、はるかに効率的な実装が可能になり(クロスプロセス通信は不要)、ブロードキャストを送受信できる他のアプリケーションに関連するセキュリティの問題について考える必要がなくなります。

そうすれば、少なくとも、受信機をアプリケーション内にのみ保持できます。

于 2012-07-26T23:22:35.743 に答える