BroadcastReceiver не получает намерение - PullRequest
2 голосов
/ 15 декабря 2009

Итак, теперь мой 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);
         }

     }

 }

Однако я не вижу тост, когда нажимаю кнопку вызова. Я что-то пропустил?

Это продолжение с использованием ответа на этот вопрос ...

Как использовать Интенты из службы или широковещательного приемника?

Ответы [ 2 ]

4 голосов
/ 16 декабря 2009

Короткий ответ: вы не можете делать то, что пытаетесь сделать.

Действие «ACTION_CALL_BUTTON» является «действием начала действия», а не «действием широковещания». Его можно использовать в Намерении, используемом в startActivity, для запуска Действия, которое должно реагировать на нажатие кнопки вызова. Вы хотите получать уведомления при нажатии кнопки вызова, и система не передает намерение объявить об этом.

В качестве альтернативы, вы можете включить то же самое intent-filter в действие, чтобы оно отображалось в качестве опции для выбора пользователем при нажатии кнопки вызова.

Что вы надеетесь сделать, когда пользователь нажмет кнопку вызова?

1 голос
/ 16 декабря 2009

Согласно документам, ACTION_CALL_BUTTON не является вещательным действием; скорее это действие действия.

См. сообщение Дианы об этом в другой теме.

...