2

問題は非常に単純に思えます - ダイヤル コマンドをインターセプトし、それ自体をダイヤルする独自のアプリを提供します (接続されている場合は VoIP 通話を発信し、接続されていない場合は電話のセルラー機能を使用して通話を発信する VoIP アプリケーションを想像してください)。

このスレッドには、必要なすべての情報が記載されています。ただし、少し問題があります。

すべてのアプリケーションが同じインテントを使用しているとは限りません。私は Intent.ACTION_DIAL が推奨される標準オプションでなければならないと考えており、確かに、ほとんどのアプリはそうしています。次に、奇妙なように見える Intent.ACTION_CALL_BUTTON があり (私の S3 は、最初にこのアクションを処理するアプリケーションがないと教えてくれました)、最後に Intent.ACTION_CALL_PRIVILEGED があります。

少し試行錯誤して、「ネイティブ」アプリ (ネイティブの通話ログと連絡先アプリケーションをネイティブと呼びます) は Intent.ACTION_CALL_PRIVILEGED を使用しているように見えますが、残りは INTENT_ACTION_CALL を使用しているようです。そして、問題があります...両方のアクションを登録すると、すべてのダイヤルコマンドを確実にキャッチできますが、それで何をしますか? これらのアクションのいずれかでインテントを起動することはできません。これは、無限ループが発生するだけであり、下位レベルのアクションがなく、TelephonyManager が明らかに makeCall メソッドを見逃しているためです。インテント フィルターを動的に登録および登録解除することはできないため、この犬がしっぽを追いかける場合の解決策はありますか?

4

0 に答える 0