Кнопки управления внутри уведомлений об андроидах
Я добавил кнопку внутри уведомления
![]()
но я не знаю, как вызвать вызов функции при нажатии.
Я пробовал такой подход https://code.google.com/p/languagepickerwidget/source/browse/trunk/trunk/src/org/gnvo/langpicker/LangPicker.java, так как он также использует объект RemoteViews, но ничего не происходит, когда я нажимаю кнопку.
Это то, что у меня есть:
private void createNotification(){
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager notificationManager = (NotificationManager) getSystemService(ns);
Notification notification = new Notification(R.drawable.ic_launcher, null, System.currentTimeMillis());
RemoteViews notificationView = new RemoteViews(getPackageName(), R.layout.notification_switch);
//the intent that is started when the notification is clicked (works)
Intent notificationIntent = new Intent(this, SettingsActivity.class);
PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.contentView = notificationView;
notification.contentIntent = pendingNotificationIntent;
notification.flags |= Notification.FLAG_NO_CLEAR;
//this is the intent that is supposed to be called when the button is clicked
Intent switchIntent = new Intent(this, switchButtonListener.class);
PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 0, switchIntent, 0);
notificationView.setOnClickPendingIntent(R.id.buttonswitch, pendingSwitchIntent);
notificationManager.notify(1, notification);
}
public static class switchButtonListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("TAG", "test");
}
}
Я могу начать работу с помощью кнопки, но мне не удалось заставить ее вызвать простую функцию. Какой был бы лучший способ сделать это?
Edit:
Я узнал, что мне нужно зарегистрировать "switchButtonListener" в AndroidManifest.xml
<receiver android:name="SettingsActivity$switchButtonListener" />
Источник: Активность Android без GUI
Теперь он работает.
Ответы
Ответ 1
Я узнал, что мне нужно зарегистрировать "switchButtonListener" в AndroidManifest.xml
<receiver android:name="SettingsActivity$switchButtonListener" />
Источник: Активность Android без GUI
Позже я узнал, что я также могу использовать такой код, чтобы достичь того же, не изменяя манифест.
switchButtonListener = new SwitchButtonListener();
registerReceiver(switchButtonListener, new IntentFilter(SWITCH_EVENT));
.
public class switchButtonListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("TAG", "test");
}
}
.
Intent switchIntent = new Intent(LangService.SWITCH_EVENT);
PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(context, 0, switchIntent, 0);
notificationView.setOnClickPendingIntent(R.id.buttonswitch, pendingSwitchIntent);
Обратите внимание, что таким образом я могу объявить класс switchButtonListener без статического атрибута (если не статический, он будет разбиваться в предыдущем примере), что дает мне большую гибкость.
Не забудьте позже вызывать unregisterReceiver().