2011-12-28 2 views
1

自分のアプリケーションが送信した暗黙のインテントを受け取ったアプリケーション(またはコンポーネント)のID(名前)をプログラム的に取得する方法があるかどうかを知りたいと思います。暗黙のインテントを受信して​​いるアプリケーションのIDですか?

アプリケーションAがアクションSEND-SMSで暗黙のインテントを送信したとします。そのアクションのためにどのアプリケーションが開始されたのかをAに伝えることは可能でしょうか?

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

答えて

3

を使用している場合は、いいえ。

ただし、ここでの意図に起動することができたの活動を決定するためにqueryIntentActivities()を使用してこの問題を回避する

  • です。
  • 複数のアクティビティが返された場合(isDefaultが設定されていないアクティビティがある場合)は、インテントチューザ(例:createChooser())を表示します。
  • そのプロセスの明示的な結果をstartActivity()に渡します。

キャッチ:私は、カスタムインテントチューザがアクティビティを「デフォルト」の動作にすることはできません。

+0

'resolveActivity()'は1つの結果しか返しません。おそらく、 'queryIntentActivities()'が候補の完全なリストを得るために必要です。 – CommonsWare

+0

ああ、マーク(@ CommonWare)は正しいです。私はドキュメントを誤解しました。 :)私は答えを更新しました。 (ありがとう!) –

+0

速い応答のためのタンク。実際、それはまさに私が探していたものでした。アイデアは、保持している権限の組み合わせに基づいて候補の1つを選択できるようにすることです(権限の危険な組み合わせを候補者から除外した場合)。主な目的は、悪意のあるアプリケーションに意図を伝えることによってセキュリティホールを引き起こす可能性のある暗黙のインテントを送信しないようにすることです。再度、感謝します! – user1118463

関連する問題