Я изучил намерение ACTION_MEDIA_BUTTON
и я пытался использовать его, перехватывать нажатия кнопок и отображать их на экране с помощью тоста. Я зарегистрировал приемник для перехвата двух намерений:
ACTION_HEADSET_PLUG
- подключение гарнитуры
ACTION_MEDIA_BUTTON
- получение нажатия кнопок
Это делается в моем основном занятии:
IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
mediaFilter.setPriority(10000);
registerReceiver(_receiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
registerReceiver(_receiver, mediaFilter);
Это часть приемника, который обрабатывает нажатия кнопок:
if (action.equals(Intent.ACTION_HEADSET_PLUG))
{
Toast.makeText(context, "earphones activity",Toast.LENGTH_SHORT).show();
if (intent.getExtras().getInt("state")==1)//if plugged
Toast.makeText(context, "earphones plugged",Toast.LENGTH_LONG).show();
else Toast.makeText(context, "earphones un-plugged",Toast.LENGTH_LONG).show();
}
else
if (action.equals(Intent.ACTION_MEDIA_BUTTON))
{
Toast.makeText(context, "button pressed",Toast.LENGTH_LONG).show();
key=intent.getExtras().getString("EXTRA_KEY_EVENT");
Toast.makeText(context, key,Toast.LENGTH_LONG).show();
}
Теперь часть, которая обрабатывает подключаемый модуль и удаление гарнитуры, работает нормально, а часть, которая перехватывает нажатие кнопки, - нет.
Есть ли причина, по которой код, обрабатывающий ACTION_MEDIA_BUTTON
, не работает?
Есть ли у меня особое разрешение, чтобы перехватить такое намерение?
Я использую Samsung Galaxy S2 для проверки кода.
Я просмотрел все похожие посты и все перепробовал. К сожалению, похоже, ничего не работает.