点开通知栏,回到原界面

转载 2015年07月08日 09:01:16
Android点击通知栏信息后返回正在运行的程序,而不是一个新Activity 

很多网上关于 通知栏的例子都是打开一个新的Activity,代码也很多。
根据那些代码如下
    public void shownotification(String tab)
    {
        NotificationManager barmanager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        Notification msg2=new Notification(android.R.drawable.stat_notify_chat,"信息",System.currentTimeMillis());
        PendingIntent contentIntent =PendingIntent.getActivity(this, 0,new Intent(this,MsgClient.class),PendingIntent.FLAG_ONE_SHOT);
        msg2.setLatestEventInfo(this,"服务器端发回信息了","信息:"+tab, contentIntent);
        barmanager.notify(NOTIFICATION,msg2);
        //Toast.makeText(ReceiveMessage.this, tab,Toast.LENGTH_SHORT).show();
        //System.out.println(tab);
    }
写出来运行之后,发现结果基本可以实现,但是点击通知栏进入的Activity是一个新创建的Activity,而不是原先正在运行的Activity,这和我的想法是背道而驰的。当你点击返回按键退出这个Activity之后,发现,原先正在运行的Activity终于出现了。明显这样是不符合条理的。


如果要实现点击通知图标返回已经运行的程序,贴出关键的部分代码。


    public void shownotification(String msg)
    {
        NotificationManager barmanager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notice = new Notification(android.R.drawable.stat_notify_chat,"服务器发来信息了",System.currentTimeMillis());
        notice.flags=Notification.FLAG_AUTO_CANCEL;
        Intent appIntent = new Intent(Intent.ACTION_MAIN);
        //appIntent.setAction(Intent.ACTION_MAIN);
        appIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        appIntent.setComponent(new ComponentName(this.getPackageName(), this.getPackageName() + "." + this.getLocalClassName())); 
        appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);//关键的一步,设置启动模式
        PendingIntent contentIntent =PendingIntent.getActivity(this, 0,appIntent,0);
        notice.setLatestEventInfo(this,"通知","信息:"+msg, contentIntent);
        barmanager.notify(STATUS_BAR_ID,notice);
       

    }


。。。。。。。。。。。。

之前在写好Notification之后,发现按Home回到主界面,再按通知栏的消息(Notification),并没有回到退出之前正在运行的Acticity,后来尝试了挺多方法总是失败。不过我最终还是解决了这个问题,主要是要在代码中加入两行代码作为声名即可。废话不多说,如下:

                 
                 Intent notificationIntent = new Intent(this.context,this.context.getClass()); 

                /*add the followed two lines to resume the app same with previous statues*/
                notificationIntent.setAction(Intent.ACTION_MAIN);
                notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
                /**/
                PendingIntent contentIntent = PendingIntent.getActivity(this.context, 0, notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT);
                notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);        
                mNotificationManager.notify(NOTIFICATION_SERVICE_ID,notification);


在声明Notification的跳转Intent时,需要给其添加上述红色标出的两行代码,即可使每次按Notification时回到原先正在运行的Activity上面。

Android 点击通知栏消息 跳转到指定的Fragment界面

之前写过一篇博文,但是实现的效果是通知来了,点击通知栏消息之后,返回当前位于栈顶的activity或者fragment界面,现在的需求是:当用户按了home键,程序进入后台之后,这时候有通知进来,需要...
  • omayyouhappy
  • omayyouhappy
  • 2016年02月19日 13:34
  • 16357

极光推送-点击通知栏跳到指定页面

在MyReceiver接收器里面,添加以下代码: if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) ...
  • u013231041
  • u013231041
  • 2016年10月11日 10:12
  • 9627

【Android】信鸽推送通知栏点击之重复打开APP&重复从Laucher主入口启动问题

信鸽推送重复打开APP问题
  • littlebrain4solving
  • littlebrain4solving
  • 2016年03月16日 10:45
  • 5719

数据库,引导界面,文件共享,通知栏的应用

  • 2016年05月21日 14:53
  • 22.96MB
  • 下载

Android设置界面与通知栏裁剪

最近产品在做认证有点烦躁,但是没有关系。不就是认证嘛。该死的认证。奇葩的需求,因为机器申请只有4G的频段,需要把2/3G的频段给频闭。界面上可以设置成只有4G的频段。但是毕竟设置界面在那里,别人发现了...
  • LEAD_SOLO
  • LEAD_SOLO
  • 2016年06月08日 15:42
  • 1035

通过AsyncTask实现上传界面进度条、通知栏进度条同时刷新。

之前做一个项目,要求上传过程中,同时刷新上传界面中进度条和通知栏下拉页面中进度条。 一、我之前的做法是,在具体的下载方法中不停向两者发消息,通知更新进度。粗糙代码如下: while ((len =...
  • wangpp2009
  • wangpp2009
  • 2011年09月23日 15:36
  • 3508

Translucent System Bar (通知栏和App界面融为一体)

转载:http://www.jianshu.com/p/0acc12c29c1b
  • qq_16418501
  • qq_16418501
  • 2016年08月23日 16:19
  • 103

Android 点击通知栏消息 跳转到指定的Fragment界面

之前写过一篇博文,但是实现的效果是通知来了,点击通知栏消息之后,返回当前位于栈顶的activity或者fragment界面,现在的需求是:当用户按了home键,程序进入后台之后,这时候有通知进来,需要...
  • omayyouhappy
  • omayyouhappy
  • 2016年02月19日 13:34
  • 16357

Android应用获取通知栏权限是否开启--以及跳转到系统设置界面--解决方案

因为项目用到推送功能,所以需求是知道用户是否开启了通知栏的权限,并且提供滑动按钮进行跳转以便用户进行关闭或者开启。 1.获取通知栏权限是否开启: /** * 获取通知栏权限是否开启 * */...
  • YLx_SHEEP
  • YLx_SHEEP
  • 2017年05月19日 17:20
  • 2041

步步为营_Android开发课[21]_用户界面之Notification(通知栏)

Focus on technology, enjoy life!—— QQ:804212028 浏览链接:http://blog.csdn.net/y18334702058/article/det...
  • y18334702058
  • y18334702058
  • 2015年04月11日 22:08
  • 541
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:点开通知栏,回到原界面
举报原因:
原因补充:

(最多只允许输入30个字)