您的位置:首页 > 移动开发 > Android开发

android 程序完全退出,,通知跳转 逻辑

2015-07-22 10:02 423 查看
其实像腾讯新闻,网易新闻,当你的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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: