2

これで、BroastcastReceiverがマニフェストファイルで宣言されました...

   <receiver android:name=".MyReceiver">
    <intent-filter>
        <action android:name="android.intent.action.CALL_BUTTON" />
    </intent-filter>
   </receiver>

通話ボタンを押したときに意図を捉えたい。

これが私のコードです...

 public class MyReceiver extends BroadcastReceiver {

     @Override
     public void onReceive(Context context, Intent intent) {

         Toast.makeText(context, "intent received", Toast.LENGTH_LONG);

         if(intent.getAction().equals("android.intent.action.CALL_BUTTON")) {
             Toast.makeText(context, "call button pressed", Toast.LENGTH_LONG);
         }

     }

 }

しかし、通話ボタンを押してもトーストが見えません。私は何か見落としてますか?

これは、この質問からの回答を使用した続きです...

サービスまたはブロードキャストレシーバーからのインテントを使用するにはどうすればよいですか?

4

2 に答える 2

4

簡単に言えば、あなたがやろうとしていることはできないということです。

'ACTION_CALL_BUTTON'アクションは、「ブロードキャストアクション」ではなく、「アクティビティ開始アクション」です。startActivityこれは、押された呼び出しボタンに応答する必要があるアクティビティを起動するために使用されるインテントで使用できます。必要なのは、呼び出しボタンが押されたときに通知されることであり、システムはそれを通知するインテントをブロードキャストしません。

または、同じものintent-filterをアクティビティに含めて、ユーザーが通話ボタンを押したときに選択できるオプションとして表示されるようにすることもできます。

ユーザーが通話ボタンを押したときに何をしたいですか?

于 2009-12-15T21:40:26.417 に答える
1

ドキュメントによるACTION_CALL_BUTTONと、ブロードキャストアクションではありません。むしろ、それは活動行動です。

別のスレッドでこれに関するDianneのメッセージを参照してください。

于 2009-12-15T21:22:19.830 に答える