Хабрахабр

[Из песочницы] Как назначить собственный метод для кнопки в уведомлении

Создавая кнопки в уведомлении нельзя просто назначить им слушатели, как мы привыкли делать редактируя интерфейс пользователя. Основным способом назначения действий в уведомлении являются интенты (Intent) — намерения.

В своем примере я вынес все следующие действия в отдельный метод sendNotification. И если для того, чтобы назначить кнопке действия перехода в какую-либо Activity достаточно просто создать соответствующий интент, внутри которого и будет описано необходимое действие, а именно — откуда и куда переходим, то в нашем случае необходимо будет сделать следующее: назначить кнопке намерение, передать ему Action для работы с интент фильтром, создать BroadcastReciver, который будет вылавливать наш Intent и уже тогда выполнять необходимый нам метод.
Итак, для начала создадим наше уведомление. Так как множество приложений постоянно вбрасывают интенты в систему, этот ключ должен быть уникальным Но прежде нам необходимо создать строку, в которую мы запишем ключ для того, чтобы наш приемник мог отловить именно наш Intent.

//Создаем уникальный ключ
String BROADCAST_ACTION = "com.example.uniqueTag"; public void sendNotification ()

Теперь необходимо создать приемник BroadCastReciver. Для этого необходимо щелкнуть ПКМ по вашей папке app->New->Other->BroadcastReciver. Далее дайте ему имя, и в открывшемся файле нам необходимо убрать заглушку в виде вброса исключения, написав на ее месте наш метод

public class ExampleReciver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { exampleMethod(); }
}

Но помимо этого нам необходимо настроить Intent Filter для нашего приемника, чтобы дать ему понять, какие именно Inetnt ему надо принимать. Для этого заходим в манифест и блоке кода нашего приемника прописываем Intent Filter, куда записываем содержимое строковой переменной BROADCAST_ACTION созданной в самом начале

<receiver android:name=".StopTimerReciver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="com.example.uniqueTag" /> </intent-filter> </receiver>

Вот и все, теперь в случае нажатия на созданную нами кнопку в уведомлении будет запускаться метод, определенный в теле BroadcastReciver

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть