通知操作没有启动新活动?

我计划有一个抬头通知,其中包含两个操作…一个用于批准登录请求,另一个用于拒绝登录请求。 通过单击这些操作中的任何一个,我希望触发对我的服务器的HTTP请求,最重要的是,不希望启动新的Activity或让用户重定向到我的应用程序。

Context context = getBaseContext(); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) .setSmallIcon(R.mipmap.notificationicon) .setContentTitle(notificationTitle) .setContentText("Access Request for " + appName + " : " + otp) .setDefaults(Notification.DEFAULT_ALL) .setPriority(NotificationCompat.PRIORITY_HIGH) .addAction(R.drawable.ic_tick, "Approve", someApproveIntent? ); 

这是我的通知构建器,在查看之后,似乎addAction方法正在寻找新的/ pendingIntent,这让我感到困惑,因为我无法在线find任何Intents不会导致新活动被触发的示例。

我将如何实现一些代码(可能是一种方法),而不是在每个动作上启动一个新的Activity …

谢谢你的帮助

如果您不想启动活动,还可以直接在PendingIntent包装BroadcastReceiverService

无论您在何处构建通知……

您的通知操作将直接启动服务。

 NotificationCompat.Builder builder = new NotificationCompat.Builder(context)... Intent iAction1 = new Intent(context, MyService.class); iAction1.setAction(MyService.ACTION1); PendingIntent piAction1 = PendingIntent.getService(context, 0, iAction1, PendingIntent.FLAG_UPDATE_CURRENT); builder.addAction(iconAction1, titleAction1, piAction1); // Similar for action 2. 

MyService.java

IntentServices一个接一个地连续运行。 他们在工作线程上完成工作。

 public class MyService extends IntentService { public static final String ACTION1 = "ACTION1"; public static final String ACTION2 = "ACTION2"; @Override public void onHandleIntent(Intent intent) { final String action = intent.getAction(); if (ACTION1.equals(action)) { // do stuff... } else if (ACTION2.equals(action)) { // do some other stuff... } else { throw new IllegalArgumentException("Unsupported action: " + action); } } } 

AndroidManifest.xml中

不要忘记在清单中注册服务。