質問

今、私は私の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);
         }

     }

 }
私は、コールボタンを押したときに

しかし、私はトーストが表示されません。私が何かを見逃していましたか?

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

サービスまたはブロードキャストからのインテントを使用する方法レシーバーですか

役に立ちましたか?

解決

短い答えは、あなたが何をしようとして行うことができないということです。

「ACTION_CALL_BUTTON」アクションが「アクションを開始するアクティビティ」よりもむしろ「ブロードキャスト・アクション」です。これは、コールボタンが押されることに応答しなければならないのアクティビティを起動するためにstartActivityで使用意向で使用することができます。何が欲しいのは、コールボタンが押されたときに通知されるようになり、システムはそれを発表する意向を放送していません。

また、あなたはそれは彼らが通話ボタンを押したときにユーザが選択するためのオプションとして出ているために活動上の同じintent-filterを含めることができます。

ユーザーが通話ボタンを押したときに、あなたが行うことを期待しては何ですか?

他のヒント

文書毎の、 ACTION_CALL_BUTTON の放送ではありませんアクション;むしろ、それは活動のアクションです。

別のスレッドで、この程度ダイアンのメッセージを参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top