2012-07-26 6 views
9

私は放送受信機は、このように私の活動で言う登録した場合、 android:エクスポートされた非マニフェストブロードキャストレシーバはありますか?

@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()の形式を使用する必要があると想定し、そのようなアクセス許可を自分のマニフェストに定義して、高い保護レベル(署名など)を与えます。あれは正しいですか?そこには簡単な方法がありますか?

ありがとうございました。

+1

エクスポートされます。保護する方法については、これをチェックしてください:http://stackoverflow.com/questions/9528608/restricting-android-broadcast-receiver-from-specific-app – Kaediil

+2

その投稿はマニフェストに登録された受信者に関するものです。私は具体的にプログラムで登録された受信機について尋ねています。 –

+0

違いはありません。あなたのアプリが起動し、受信者を起動すると誰でもあなたにインテントを送ることができます。 – Kaediil

答えて

1

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

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

このようにして、少なくとも受信機はアプリケーションの内部に置くことができます。

+2

これは技術的に私の質問に答えるわけではありませんが、暗黙の問題の解決策です。 –

+1

ブロードキャストをアプリケーション内で送信する必要がある場合、プロセスの境界を越えて実行可能なソリューションではありません。 –

+0

@JuusoOhtonen大丈夫でしたが、それは質問の内容ではありませんでした。 – Kaediil

関連する問題