处理android通知中的button
我在通知中添加了一个button
但是我不知道如何在被点击的时候调用一个函数。
我尝试了一种像https://code.google.com/p/languagepickerwidget/source/browse/trunk/trunk/src/org/gnvo/langpicker/LangPicker.java这样的方法,因为它也使用了RemoteViews对象,但是当我点击button。
这是我现在有:
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"); } }
我可以开始一个button的活动,但我没有成功,让它调用一个简单的function。 什么是最好的方法来做到这一点?
编辑:我发现我必须在AndroidManifest.xml中注册“switchButtonListener”
<receiver android:name="SettingsActivity$switchButtonListener" />
来源: 没有GUI的Android活动
它现在有效。
我发现我必须在AndroidManifest.xml中注册“switchButtonListener”
<receiver android:name="SettingsActivity$switchButtonListener" />
来源: 没有GUI的Android活动
后来我发现我也可以使用这样的代码来实现同样的事情而不用修改清单。
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()。