0

どのアプリが着信通話を処理するかを判断するために、電話にクエリを実行する必要があるという特殊な状況があります。95% のケースで com.android.phone がこの作業を行っていることを認識していますが、95% の確率で正しいとは限らず、100% の確率でそれがどのアプリになるかを知る必要があります (ユーザー通話を処理するためにカスタム電話アプリをインストールできた可能性があります)。

インテントに精通しているので、PackageManager に次のアクションを処理できるすべてのアプリを特定するように依頼するだけでよいと考えました: Intent.ACTION_ANSWER または Intent.ACTION_CALL (通話に関連する 2 つのインテント アクションのみ)私が試した他のすべての電話機能。

残念ながら、たとえば .resolveActivity() または .queryIntentActivities() を使用して PackageManager にクエリを実行しようとすると、これらのインテントに対してデフォルトのアプリケーションが存在する場合でも、結果は常に「null」になります。私のフラストレーションをさらに悪化させているのは、これらのインテント アクションを利用できない理由に関するドキュメントがまったくないことです。ドキュメントは、目的を達成するためにすべてを正確に行っているように見えます。

したがって、問題は 2 つあります。電話アプリ (できればデフォルトのアプリ) を特定する合理的な方法はありますか? また、この正確な目的のために作成されたインテント アクションを利用できないのはなぜですか?

TL;DR通話に関連する 2 つのインテント アクションがありますが、これらを使用して PackageManager をクエリし、これらのインテント アクションを容易にする基になるアプリを見つけることはできません。なぜだめですか?

4

0 に答える 0