Frage

Jetzt habe ich meinen Broastcastreceiver in der Manifest -Datei deklariert ...

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

Ich möchte die Absicht fangen, wenn die Anruftaste gedrückt wird.

Hier ist mein Code ...

 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);
         }

     }

 }

Ich sehe den Toast jedoch nicht, wenn ich den Anrufknopf drücke. Habe ich etwas verpasst?

Dies ist eine Fortsetzung mit einer Antwort aus dieser Frage ...

Wie benutze ich Absichten von einem Dienst oder einem Rundfunkempfänger?

War es hilfreich?

Lösung

Die kurze Antwort ist, dass Sie nicht das tun können, was Sie versuchen.

Die Aktion 'action_call_button' ist eher eine "Aktivitätsaktion" als eine "Broadcast -Aktion". Es kann in einer Absicht verwendet werden, die in verwendet wird startActivity Um eine Aktivität zu starten, die auf die gedrückte Anruftaste reagieren sollte. Was Sie möchten, ist benachrichtigt, wenn die Anruftaste gedrückt wird, und das System sendet keine Absicht, dies anzukündigen.

Alternativ können Sie dasselbe einbeziehen intent-filter Bei einer Aktivität, damit der Benutzer beim Drücken der Anruftaste ausgewählt wird.

Was hoffen Sie zu tun, wenn der Benutzer die Anruftaste drückt?

Andere Tipps

Gemäß den Dokumenten, ACTION_CALL_BUTTON ist keine Rundfunkaktion; Es ist vielmehr eine Aktivitätsaktion.

Sehen Dianne's Nachricht darüber in einem anderen Thread.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top