通知点击无法启动在Nexus手机的特定活动 [英] Notification Click not launch the given Activity on Nexus Phones

查看:207
本文介绍了通知点击无法启动在Nexus手机的特定活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用这code,显示本地通知,并在通知自带然后点击通知要启动的ListActivity而谷歌Nexus设备上的 ListActiviy 终止不通知启动时,点击,但在其他的设备本code运作良好。

 意图notificationIntent =新的意图(背景下,
            ListActivity.class);
    notificationIntent.putExtra(点击,通知已点击);
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); //要在启动只能打开一个活动。
    PendingIntent pIntent = PendingIntent.getActivity(背景下,REQ code,
            notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationManager纳米=(NotificationManager)上下文
            .getSystemService(Context.NOTIFICATION_SERVICE);
    NotificationCompat.Builder通知=新NotificationCompat.Builder(
            上下文);

    notify.setContentIntent(pIntent);
    notify.setSmallIcon(R.drawable.app_icon);
    notify.setContentTitle(的Hello World);
    notify.setContentText();
    notify.setAutoCancel(真正的);
    乌里alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    notify.setSound(alarmSound);
    notify.setLights(Color.BLUE,500,1000);
    nM.notify(REQ code,notify.build());
 

在活动未启动添加logcat的:

  03-26 14:22:35.893:W / ActivityManager(515):权限拒绝:在启动意向书{CMP = com.xy / .music.ui.PlaybackActivity bnds = 42101 ] [636186]从空(有演员)}(PID = -1,UID = 10121),不是从UID 10126出口
03-26 14:22:35.893:W / ActivityManager(515):无法发送startActivity意图
03-26 14:22:35.893:W / ActivityManager(515):java.lang.SecurityException异常:权限被拒绝:在启动意向书{CMP = com.xy / .music.ui.PlaybackActivity bnds = [42101] [636186](有从空演员)}(PID = -1,UID = 10121),不是从UID 10126出口
03-26 14:22:35.893:W / ActivityManager(515):在com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1186)
03-26 14:22:35.893:W / ActivityManager(515):在com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:741)
03-26 14:22:35.893:W / ActivityManager(515):在com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:3300)
03-26 14:22:35.893:W / ActivityManager(515):在com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:252)
03-26 14:22:35.893:W / ActivityManager(515):在com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:192)
03-26 14:22:35.893:W / ActivityManager(515):在android.content.IIntentSender $ Stub.onTransact(IIntentSender.java:64)
03-26 14:22:35.893:W / ActivityManager(515):在android.os.Binder.execTransact(Binder.java:404)
03-26 14:22:35.893:W / ActivityManager(515):在dalvik.system.NativeStart.run(本机方法)
 

解决方案

我上面的code运作良好的所有操作系统版本,除了奇巧4.4和4.4 + 但是,我有我的解决方案,把接收器的另一个过程,它非常适用于所有的大多数Android操作系统版本...

喜欢这种方式。

活动机器人:名称=机器人NotifyReciever。:程序=:远程

,我们可以更多地了解进程这里....

<一个href="http://stackoverflow.com/questions/4311069/should-i-use-android-process-remote-in-my-receiver">Should我用安卓过程=&QUOT;:远程&QUOT;在我的接收器?

I am using this code to show the local notification and When notification comes then on click of notification want to launch the ListActivity but on Google nexus device ListActiviy is not launches when click on notification, but on other device this code is working well.

    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());

Adding logcat when the activity is not launched:

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)

解决方案

My above code is working well for all OS version except Kitkat 4.4 and 4.4 + But i have got solution i, put the receiver in another process and it works well for all most Android OS versions...

Like this way..

activity android:name=".NotifyReciever" android:process=":remote"

and we can learn more about processes here....

Should I use android: process =":remote" in my receiver?

这篇关于通知点击无法启动在Nexus手机的特定活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆