【问题标题】:Action from notification does nothing通知中的操作不执行任何操作
【发布时间】:2017-12-15 16:36:21
【问题描述】:

这是我的代码:

  Intent notificationIntent = new Intent(this, PSTimelineFragmentsActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(PSLocationService.this);
    mBuilder.setPriority(Notification.PRIORITY_MAX);
    mBuilder.setContentTitle(getText(R.string.passenger_name_long));
    mBuilder.setContentText(getText(R.string.service_subtitle));
    mBuilder.setSmallIcon(R.drawable.notification_icon);
    mBuilder.setContentIntent(pendingIntent);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
        Intent action1Intent = new Intent(PSLocationService.this, NotificationActionService.class)
                .setAction("autopilot").putExtra("autopilot", "autopilot");
        PendingIntent action1PendingIntent = PendingIntent.getService(PSLocationService.this, 0,
                action1Intent, PendingIntent.FLAG_ONE_SHOT);

        Intent action2Intent = new Intent(PSLocationService.this, NotificationActionService.class)
                .setAction("settings").putExtra("settings", "settings");
        PendingIntent action2PendingIntent = PendingIntent.getService(PSLocationService.this, 1,
                action2Intent, PendingIntent.FLAG_ONE_SHOT);

        RemoteInput remoteInput = new RemoteInput.Builder("autopilot")
                .setLabel("Stop")
                .build();
        NotificationCompat.Action action1 =
                new NotificationCompat.Action.Builder(R.drawable.icn_terms_settings,
                        "Stop", action1PendingIntent)
                        .addRemoteInput(remoteInput)
                        .build();

        RemoteInput remoteInput2 = new RemoteInput.Builder("settings")
                .setLabel("Settings")
                .build();
        NotificationCompat.Action action2 =
                new NotificationCompat.Action.Builder(R.drawable.icn_terms_settings,
                        "Settings", action2PendingIntent)
                        .addRemoteInput(remoteInput2)
                        .build();
        mBuilder.addAction(action1);
        mBuilder.addAction(action2);
    }
    Notification notification = mBuilder.build();
    startForeground(1338, notification);

但每当我按下通知时,我都会收到此错误:

12-15 17:35:06.553: D/StatusBar(933): Clicked on button 0 for 0|nl.hgrams.passenger|1338|null|12567
12-15 17:35:06.555: E/RemoteViews(933): Cannot send pending intent: 
12-15 17:35:06.555: E/RemoteViews(933): android.content.IntentSender$SendIntentException
12-15 17:35:06.555: E/RemoteViews(933):     at android.app.ContextImpl.startIntentSender(ContextImpl.java:753)
12-15 17:35:06.555: E/RemoteViews(933):     at android.content.ContextWrapper.startIntentSender(ContextWrapper.java:390)
12-15 17:35:06.555: E/RemoteViews(933):     at android.content.ContextWrapper.startIntentSender(ContextWrapper.java:390)
12-15 17:35:06.555: E/RemoteViews(933):     at android.widget.RemoteViews$OnClickHandler.onClickHandler(RemoteViews.java:217)
12-15 17:35:06.555: E/RemoteViews(933):     at com.android.systemui.statusbar.BaseStatusBar$3.onClickHandler(BaseStatusBar.java:323)
12-15 17:35:06.555: E/RemoteViews(933):     at android.widget.RemoteViews$SetOnClickPendingIntent$1.onClick(RemoteViews.java:720)
12-15 17:35:06.555: E/RemoteViews(933):     at android.view.View.performClick(View.java:5204)
12-15 17:35:06.555: E/RemoteViews(933):     at android.view.View$PerformClick.run(View.java:21153)
12-15 17:35:06.555: E/RemoteViews(933):     at android.os.Handler.handleCallback(Handler.java:739)
12-15 17:35:06.555: E/RemoteViews(933):     at android.os.Handler.dispatchMessage(Handler.java:95)
12-15 17:35:06.555: E/RemoteViews(933):     at android.os.Looper.loop(Looper.java:148)
12-15 17:35:06.555: E/RemoteViews(933):     at android.app.ActivityThread.main(ActivityThread.java:5417)
12-15 17:35:06.555: E/RemoteViews(933):     at java.lang.reflect.Method.invoke(Native Method)
12-15 17:35:06.555: E/RemoteViews(933):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
12-15 17:35:06.555: E/RemoteViews(933):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

【问题讨论】:

  • PendingIntent.getBroadcast() 怎么样?
  • 抱歉,在回到这个问题之前有一个更大的问题要解决。 PendintInteng.getBroadcast 确实返回一个对象:pending intent 2 is: PendingIntent{f31c8fa: android.os.BinderProxy@ecaeeab}

标签: android service notifications android-pendingintent remote-input


【解决方案1】:

将 FLAG_ONE_SHOT 更改为 FLAG_UPDATE_CURRENT 使其正常工作

【讨论】:

  • 从 FLAG_CANCEL_CURRENT 更改为 FLAG_UPDATE_CURRENT 的工作似乎相同
猜你喜欢
  • 2020-03-23
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 2020-07-30
相关资源
最近更新 更多