3

重複の可能性:
ブロードキャスト インテントの送信者を特定する方法

新しい発信ブロードキャスト レシーバーを適用しました。正常に動作しています。

しかし、どのアプリケーション ユーザーが電話をかけたかを知りたいのです。

つまり、デフォルトのダイヤラまたは Google 音声アプリケーションからですか?

どうすればこれを知ることができますか?

ありがとう。

4

1 に答える 1

0

私の最初の試みは、ブロードキャストのソースまたはブロードキャストを送信する意図を取得することです。ただし、Android はそれを知る方法を提供しておらず、それを強調することさえありません。これは、通常、ユーザーにとって意味のあるブロードキャストの内容であるためです。

ブロードキャストを送信するのが独自のアプリケーションである場合、Michael が提案したように非常に簡単です。放送ソースを受信機に示すエクストラを追加します。ただし、OUTGOING_CALL インテントから取得できる唯一の追加機能は、通話先の番号です。

それにもかかわらず、私は解決策を念頭に置いていますが、これは機能することが保証されておらず、純粋に理論的なものです. ここでは自己責任です。

受信機で最近使用したアプリケーションを確認し、最近使用したアプリケーションの 1 つである場合は、Google Voice 経由で通話が行われたと想定します。これは、通話が発信され、受信者がそれを傍受するとすぐに、ユーザーが Google Voice でアクティブになることが予想されるためです。

したがって、レシーバーでは、次のことができます。

ActivityManager m = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
RecentTaskInfo task = m.getRecentTasks(3,0).get(0);
String nameofrecentlyusedapp = task.ComponentName.toString();

最近使用されたアプリケーションをチェックし、 get(1) と get(2) を使用して最も古い 2 つのアプリケーションを読み取り、柔軟性を高めます。

試してみて、うまくいくかどうかお知らせください。

于 2012-07-31T23:29:33.713 に答える