android 点击通知栏返回应用 研究
2013-04-27 17:18
393 查看
此前在网上找到的一段代码如下:
他的原理是启动一个新的activity ResultActivity 这个 Activity 啥都没做,在 onCreate 里直接 finish(),这样就可以实现返回按下 home 前的 Activity ,但是这样做看起来有点不专业就是。
于是研究了一下 ApiDemo 的 Notification 使用方法,在 Notification/Status Bar 找到了我想要的效果,但是看他实现的方式有点复杂,不适合我的使用场景,他适合如下场景:
当你想要返回的 Activity 不在 Activity 堆栈最上层
于是在上 StackOverFlow 找到了这篇帖子:
http://stackoverflow.com/questions/4089213/android-notification-bar-open-last-active-activity
大概意思是,在 Mainfest 里设置 Activity flags android:launchMode="singleTop"
再使用如下的 Intent 设置:
就可以返回当前 Activity 而不是重新运行了一个 activity。
//自定义的setNotiType()方法 @SuppressWarnings("deprecation") private void backNotification2() { // 建立新的Intent Intent notifyIntent = new Intent(this, ResultActivity.class); notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 建立PendingIntent作为设定递延执行的Activity PendingIntent appIntent = PendingIntent.getActivity(EmulatorActivity.this, 0, notifyIntent, 0); // 建立Notification,并设定相关参数 Notification myNoti = new Notification(); // 设置状态栏显示的图标 myNoti.icon = R.drawable.ic_launcher; // 设定状态栏显示的文字信息 myNoti.tickerText = getString(R.string.hint_click_to_back); // 发出预设的身影 myNoti.defaults = Notification.DEFAULT_LIGHTS; myNoti.flags = Notification.FLAG_NO_CLEAR; //不可清楚 // 设置通知消息 myNoti.setLatestEventInfo(EmulatorActivity.this, emulator.getCurMrpFile().getAppName(), getString(R.string.hint_click_to_back), appIntent); // 发送出消息 NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); manager.notify(1001, myNoti); isNotificationShow = true; MobclickAgent.onEvent(this, "backrun", MyUtils.getTimeNow()); }
他的原理是启动一个新的activity ResultActivity 这个 Activity 啥都没做,在 onCreate 里直接 finish(),这样就可以实现返回按下 home 前的 Activity ,但是这样做看起来有点不专业就是。
于是研究了一下 ApiDemo 的 Notification 使用方法,在 Notification/Status Bar 找到了我想要的效果,但是看他实现的方式有点复杂,不适合我的使用场景,他适合如下场景:
当你想要返回的 Activity 不在 Activity 堆栈最上层
于是在上 StackOverFlow 找到了这篇帖子:
http://stackoverflow.com/questions/4089213/android-notification-bar-open-last-active-activity
大概意思是,在 Mainfest 里设置 Activity flags android:launchMode="singleTop"
再使用如下的 Intent 设置:
Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
就可以返回当前 Activity 而不是重新运行了一个 activity。
public Notification createNotification() {
Notification nf = new Notification(android.R.drawable.stat_sys_download, "正在为您下载...", System.currentTimeMillis());
nf.flags = Notification.FLAG_ONGOING_EVENT;
nf.contentView = new RemoteViews(getPackageName(), R.layout.notification_download);
setNotificationInfo(nf, 0, "..M", null, true);
Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
nf.contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
return nf;
}
相关文章推荐
- 【Android】仿QQ功能点击通知栏返回应用,非启动一个新Activity
- android 点击通知栏返回应用 ,非启动一个新Activity
- android安卓点击通知栏,返回应用,而不重启应用
- android中webview显示网页、进度条显示进度、上一页、下一页、支持放大缩小、返回按钮2秒两次点击退出应用
- Android Launcher研究(三)-----------列出所安装的应用,点击进入相应的应用!
- Android实现点击通知栏后,先启动应用再打开目标Activity
- 模仿QQ按下返回键,程序后台运行,点击通知使其重新运行的应用
- android开发之让Android点击通知栏信息后返回正在运行的程序
- android 按Home键退出后点击通知回到应用
- android服务里生成通知点击后返回正在运行的程序和当前的Activity
- Android Launcher研究(三)-----------列出所安装的应用,点击进入相应的应用!
- Android实现首次点击返回键提示信息,第二次点击退出应用
- android 下载应用 通知栏显示进度 下完之后点击安装
- Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题
- Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题
- Android Launcher研究(三)-----------列出所安装的应用,点击进入相应的应用!
- 关于android推送服务-点击通知栏回不到当前应用程序的问题研究
- android 如何点击通知栏中的前台服务,返回当前正在进行的活动
- Android实现点击两次返回键退出应用