我构建了包含按钮的自定义通知,当用户按下按钮时,我想登录。
按钮不应该打开任何活动,而应该只打开逻辑人员,如更改歌曲。
代码:
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification);
contentView.setTextViewText(R.id.toptext, nowPlayingTitle);
//this not work
Intent intent = new Intent(this, receiver.class);
intent.putExtra("UNIQ", "1");
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 234324243, intent, PendingIntent.FLAG_CANCEL_CURRENT)
contentView.setOnClickPendingIntent(R.id.imageButtonPlay,
pendingIntent);
notification.contentView = contentView;
// this is to return to my activity if click somwhere else in notification
Intent notificationIntent = new Intent(this, MYACTIVITY.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.contentIntent = contentIntent;
mNotificationManager.notify(NOTIFICATION_ID, notification);
我不知道setOnClickPendingIntent的窍门第二个参数需要什么?如何在用户按下按钮后调用函数?
我可能错过了一些东西,因为我不了解接收器端以及用户按下后发生了什么
您忽略了一个事实,即您创建的按钮实际上不属于您的应用程序。它是在另一个上下文、另一个过程中创建的。它无法调用您的函数。
相反,当用户点击按钮时,该未决意图就会被激发。你可以通过你的接收器(在你的活动中)捕捉它,检查一些参数并执行操作。或者,您可以实现一个服务并在后台处理此意图。我更喜欢这样。
感谢您的快速回答。我试着用接收器,但它从来没有发射过。代码在主要问题中,我为复习课创建了以下代码:
public class receiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle bundle = intent.getExtras();
}
}
但是点击通知永远不会启动接收器(调试模式下的测试)