2011-06-25 22 views
3

sendBroadcastを使用して、それを発信したアプリケーションによってのみ受信可能なインテントをブロードキャストします。ブロードキャストをアプリケーションに適用することは可能ですか?

ユースケースは認証モジュール用です。私が構築したいくつかのプロジェクトの間で使用する予定です。現在、401(認証に失敗した)応答コードが受信されると、インテントがブロードキャストされ、マニフェストに配線されてユーザーをログインページに戻すことができます。

は、だから、私はこれを行うことができます場合、私は思ったんだけど明確にする:

Intent i = new Intent("my.custom.logout.broadcast.path.that.will.be.the.same.in.multiple.apps"); 
sendBroadcast(i); 

何とか意図はまったく同じ未修正のコードベースを使用し、他のアプリでは取り上げません。

+0

インテントにデータを入れて、各アプリケーションにロジックを追加して、そのアプリケーション固有のデータを持つインテントにのみ作用させることができます。残念ながら、これは既存のコードを使用する問題を解決しません。 – Spidy

答えて

0

質問の一部ではありませんが、特にあなたが認証を扱っているので、ブロードキャストを送受信できる人を制限するにはpermissionsを使用する必要があります。実際には、AccountManagerAPI demos

に移動することを強くお勧めします。移動元のアプリケーションのパッケージ名または特定のアクセス許可文字列をIntentエクストラに渡すことです。パッケージ名または応答の許可も同様です。残念ながら、ブロードキャストインテントの特定のパッケージをターゲットにすることはできません。

さらに別の溶液、余分(Intent#putExtra())などのために、放送新たにPendingIntentIntentこと、発信アプリケーションからのものをPendingIntent.getActivity()を使用しており、(SO送信者と受信者が適切なアクセス許可を処理することができる)上記アクセス許可モデルを使用して放送。ブロードキャストレシーバーがその作業を終えたら、PendingIntentを使用して、ターゲットアクティビティー(追加のエクストラを追加する機能を含む)を開始することができます。

+0

私は意図を余分に渡すという考えが好きです。ありがとうございました。私はそれが私のソリューションに完璧にフィットすると思います。 – walta

0

これは、アプリ内通信用に特別に設計されたLocalBroadcastManager 。

+0

ただし、プロセス間ではありません – Benoit

関連する問題