BroadcastReceiver не получает намерение

Итак, теперь у меня есть 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);
         }

     }

 }

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

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

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


person Ryan Alford    schedule 15.12.2009    source источник


Ответы (2)


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

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

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

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

person Reto Meier    schedule 15.12.2009
comment
В очередной раз вы пришли на помощь. Это именно то, что я хотел сделать в первую очередь... открыть действие при нажатии кнопки вызова. - person Ryan Alford; 16.12.2009

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

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

person Roman Nurik    schedule 15.12.2009
comment
Спасибо. Итак, нет ли способа запустить мою активность, когда пользователь нажимает кнопку вызова? - person Ryan Alford; 16.12.2009
comment
Извините, я не уточнил дальше. Рето это прикрыл :-) - person Roman Nurik; 16.12.2009