Android中使用Notification并通过点击Notification启动启动通知详细Activity,点击返回键和按钮返回主界面
2013-10-25 12:53
666 查看
出差刚回公司,闲得慌,就写一点android技术博客吧!把一些在工作中遇到的问题和技术点分享给大家吧!希望对你们有所帮助,这个项目自己和同事两个人做一期和二期大概花了一个月零六天弄完的,好了不多说了!
其实像腾讯新闻,网易新闻,当你的app退出后,服务器推送过来一消息(也可以是通知),都是通过广播接受者接收,点击notification后到开启详细的activity界面, 如果是消息,那就要自己组装后弹出notification,到了详细新闻界面的时候,点击返回键(后退按钮),这里开启的就是主界面activity了,这里说明一下,我们这个项目是用的是百度云推送,这个免费并且用起来还可以
下面就展示一些代码吧
// 弹出通知
Intent startIntent=newIntent(context,OnlineAdviceActivity.class);
//这里是为了判断是否是点击notification后到的详细界面
startIntent.putExtra("onlineFlag",true);
startIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
PublicUtil.showNotification(context,NoteDateParser.title, NoteDateParser.body,NOTIFICATION_ONLINE_ADVICE,
startIntent);
附上PublicUtil.showNotification的代码
publicstatic
voidshowNotification(Contextcontext, String title, String body,int notifyId, Intent startIntent) {
//这里是弹出notifacation的代码
NotificationManager notificationManager= (NotificationManager) context .getSystemService(context.NOTIFICATION_SERVICE);
Notification notification =
new Notification(R.drawable.app_icon,"", System.currentTimeMillis());
notification.defaults = Notification.DEFAULT_SOUND;//
声音
notification.defaults = Notification.DEFAULT_VIBRATE;//
震动
notification.flags = Notification.FLAG_AUTO_CANCEL;
PendingIntent contentIntent =PendingIntent.getActivity(context, 0, startIntent, 0);
notification.setLatestEventInfo(context,title, body, contentIntent);
notificationManager.notify(notifyId,notification);
}
//这里是点击notifacation后进入的activity(OnlineAdviceActivity)中返回按钮的事件监听
开启OnlineAdviceActivity后要在OnlineAdviceActivity的 oncreate() 方法中得到 onlineFlag的值
如果是true则是点击通知notification后触发的事件,
下面是去的onlineFlag的值
onlineFlag=intent.getBooleanExtra("onlineFlag",false);
iv_main_back.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View v) {
if(onlineFlag){
Intent intent=new Intent(OnlineAdviceActivity.this,MainActivity.class);
startActivity(intent);
finish();
}else{
finish();
}
}
});
//后退键也要做相应的处理,如果是点击notification进入的OnlineAdviceActivity则后退也要开启主界面
@Override
publicboolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(onlineFlag){
Intent intent=new Intent(OnlineAdviceActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
}
returnsuper.onKeyDown(keyCode, event);
}
其实像腾讯新闻,网易新闻,当你的app退出后,服务器推送过来一消息(也可以是通知),都是通过广播接受者接收,点击notification后到开启详细的activity界面, 如果是消息,那就要自己组装后弹出notification,到了详细新闻界面的时候,点击返回键(后退按钮),这里开启的就是主界面activity了,这里说明一下,我们这个项目是用的是百度云推送,这个免费并且用起来还可以
下面就展示一些代码吧
// 弹出通知
Intent startIntent=newIntent(context,OnlineAdviceActivity.class);
//这里是为了判断是否是点击notification后到的详细界面
startIntent.putExtra("onlineFlag",true);
startIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
PublicUtil.showNotification(context,NoteDateParser.title, NoteDateParser.body,NOTIFICATION_ONLINE_ADVICE,
startIntent);
附上PublicUtil.showNotification的代码
publicstatic
voidshowNotification(Contextcontext, String title, String body,int notifyId, Intent startIntent) {
//这里是弹出notifacation的代码
NotificationManager notificationManager= (NotificationManager) context .getSystemService(context.NOTIFICATION_SERVICE);
Notification notification =
new Notification(R.drawable.app_icon,"", System.currentTimeMillis());
notification.defaults = Notification.DEFAULT_SOUND;//
声音
notification.defaults = Notification.DEFAULT_VIBRATE;//
震动
notification.flags = Notification.FLAG_AUTO_CANCEL;
PendingIntent contentIntent =PendingIntent.getActivity(context, 0, startIntent, 0);
notification.setLatestEventInfo(context,title, body, contentIntent);
notificationManager.notify(notifyId,notification);
}
//这里是点击notifacation后进入的activity(OnlineAdviceActivity)中返回按钮的事件监听
开启OnlineAdviceActivity后要在OnlineAdviceActivity的 oncreate() 方法中得到 onlineFlag的值
如果是true则是点击通知notification后触发的事件,
下面是去的onlineFlag的值
onlineFlag=intent.getBooleanExtra("onlineFlag",false);
iv_main_back.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View v) {
if(onlineFlag){
Intent intent=new Intent(OnlineAdviceActivity.this,MainActivity.class);
startActivity(intent);
finish();
}else{
finish();
}
}
});
//后退键也要做相应的处理,如果是点击notification进入的OnlineAdviceActivity则后退也要开启主界面
@Override
publicboolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(onlineFlag){
Intent intent=new Intent(OnlineAdviceActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
}
returnsuper.onKeyDown(keyCode, event);
}
相关文章推荐
- android中使用Notification打开详情界面activity,点击返回键和按钮返回主界面
- Android中使用Notification并通过点击Notification重新启动Activity
- Android Notification 使用详解之三:通过服务更新进度通知&在Activity中监听服务进度
- android 点击通知栏消息打开activity,如果app未运行先启动app或打开activity返回后再启动app
- Android中使用Notification并通过点击Notification重新启动Activity
- 【Android】仿QQ功能点击通知栏返回应用,非启动一个新Activity
- android 点击通知栏返回应用 ,非启动一个新Activity
- Android中使用Notification并通过点击Notification重新启动Activity
- Android点击通知栏信息后返回正在运行的程序,而不是一个新Activity
- Android通知栏点击无法启动Activity的问题
- 让Android点击通知栏信息后返回正在运行的程序,并完全退出所有activity
- Android点击通知栏信息后返回正在运行的程序,而不是一个新Activity
- Android实现点击通知栏后,先启动应用再打开目标Activity
- Android实现点击通知栏后,先启动应用再打开目标Activity
- 在android的service中启动一个通知,点击通知无法启动activity,报一个SecurityException异常
- Android实现点击通知栏后,先启动应用再打开目标Activity
- Android实现点击通知栏后,先启动应用再打开目标Activity 144
- Notification---Notification使用详解之三:通过服务更新进度通知&在Activity中监听服务进度
- android点击系统通知Notification,进入指定的activity
- Android notification 的使用,可点击,并且进入Activity不走onCreate()方法。