重複の可能性:
ブロードキャスト インテントの送信者を特定する方法
新しい発信ブロードキャスト レシーバーを適用しました。正常に動作しています。
しかし、どのアプリケーション ユーザーが電話をかけたかを知りたいのです。
つまり、デフォルトのダイヤラまたは Google 音声アプリケーションからですか?
どうすればこれを知ることができますか?
ありがとう。
重複の可能性:
ブロードキャスト インテントの送信者を特定する方法
新しい発信ブロードキャスト レシーバーを適用しました。正常に動作しています。
しかし、どのアプリケーション ユーザーが電話をかけたかを知りたいのです。
つまり、デフォルトのダイヤラまたは Google 音声アプリケーションからですか?
どうすればこれを知ることができますか?
ありがとう。
私の最初の試みは、ブロードキャストのソースまたはブロードキャストを送信する意図を取得することです。ただし、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 つのアプリケーションを読み取り、柔軟性を高めます。
試してみて、うまくいくかどうかお知らせください。