通知单击不在Nexus电话上启动给定的活动

Amr*_*rit 21 events notifications android click

我正在使用此代码显示本地通知,当通知出现时,点击通知想要启动ListActivity,但是在ListActiviy点击通知时不启动Google nexus设备,但在其他设备上此代码运行良好.

    Intent notificationIntent = new Intent(context,
            ListActivity.class);
    notificationIntent.putExtra("clicked", "Notification Clicked");
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |   Intent.FLAG_ACTIVITY_SINGLE_TOP);   // To open only one activity on launch.
    PendingIntent pIntent = PendingIntent.getActivity(context, reqCode,
            notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationManager nM = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);
    NotificationCompat.Builder notify = new NotificationCompat.Builder(
            context);

    notify.setContentIntent(pIntent);
    notify.setSmallIcon(R.drawable.app_icon);
    notify.setContentTitle("Hello World");
    notify.setContentText("");
    notify.setAutoCancel(true);
    Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    notify.setSound(alarmSound);
    notify.setLights(Color.BLUE, 500, 1000);
    nM.notify(reqCode, notify.build());
Run Code Online (Sandbox Code Playgroud)

未启动活动时添加logcat:

03-26 14:22:35.893: W/ActivityManager(515): Permission Denial: starting Intent { cmp=com.x.y/.music.ui.PlaybackActivity bnds=[42,101][636,186] (has extras) } from null (pid=-1, uid=10121) not exported from uid 10126
03-26 14:22:35.893: W/ActivityManager(515): Unable to send startActivity intent
03-26 14:22:35.893: W/ActivityManager(515): java.lang.SecurityException: Permission Denial: starting Intent { cmp=com.x.y/.music.ui.PlaybackActivity bnds=[42,101][636,186] (has extras) } from null (pid=-1, uid=10121) not exported from uid 10126
03-26 14:22:35.893: W/ActivityManager(515):     at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1186)
03-26 14:22:35.893: W/ActivityManager(515):     at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:741)
03-26 14:22:35.893: W/ActivityManager(515):     at com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:3300)
03-26 14:22:35.893: W/ActivityManager(515):     at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:252)
03-26 14:22:35.893: W/ActivityManager(515):     at com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:192)
03-26 14:22:35.893: W/ActivityManager(515):     at android.content.IIntentSender$Stub.onTransact(IIntentSender.java:64)
03-26 14:22:35.893: W/ActivityManager(515):     at android.os.Binder.execTransact(Binder.java:404)
03-26 14:22:35.893: W/ActivityManager(515):     at dalvik.system.NativeStart.run(Native Method)
Run Code Online (Sandbox Code Playgroud)

Har*_*dik 65

这是针对kitkat 4.4报告的问题,当点击此处的通知是一个问题网址时,没有打开活动

http://code.google.com/p/android/issues/detail?id=63236

http://code.google.com/p/android/issues/detail?id=61850

建议的解决方法是取消现有PendingIntent或使用PendingIntent.FLAG_CANCEL_CURRENT

要么

试试以下

在Activity中添加标志AndroidManifiest.xml

android:exported="true"
Run Code Online (Sandbox Code Playgroud)

  • 这些链接中的一个建议是,在目标Activity的"activity"标签中添加*android:exported ="true"*修复了我在KitKat上的问题.谢谢你的链接. (7认同)
  • PendingIntent.FLAG_CANCEL_CURRENT解决了我的问题 (2认同)

小智 10

此问题以Android Kitkat 4.4和Lollipop而闻名.请加 :

android:exported="true"
Run Code Online (Sandbox Code Playgroud)

在android清单里面的活动标签,应该在点击状态栏的通知后打开


Amr*_*rit 0

我的上面的代码适用于除 Kitkat 4.4 和 4.4 之外的所有操作系统版本 + 但我有解决方案 i,将接收器放在另一个进程中,它适用于所有大多数 Android 操作系统版本...

像这样..

活动 android:name=".NotifyReciever" android:process=":remote"

我们可以在这里了解有关流程的更多信息......

我应该在接收器中使用 android: process =":remote" 吗?