我在通知中添加了一个按钮
但是我不知道如何在点击它时调用它。
我尝试了类似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");
}
}
我可以使用按钮开始一个活动,但我没有成功让它调用一个简单的函数。最好的方法是什么?
修改 我发现我必须在AndroidManifest.xml中注册“switchButtonListener”
<receiver android:name="SettingsActivity$switchButtonListener" />
来源:Android Activity with no GUI
现在有效。
答案 0 :(得分:32)
我发现我必须在AndroidManifest.xml中注册“switchButtonListener”
<receiver android:name="SettingsActivity$switchButtonListener" />
来源:Android Activity with no 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()。