通知栏推送点击跳转以及返回主界面(或指定页面)

需求:点击推送下消息,首先进入详情页面,然后从详情页面退出时- 1. 判断界面栈是否存在主页面,如果存在(也就是启动状态的app),就直接退出当前页面;2. 如果不存在(没有启动过),则退出详情时返回主页面。

其实重点就是利用Activity管理器获取运行任务栈信息,然后进行判断:

SystemUtils.java

        boolean isAppRunning = false;
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List list = am.getRunningTasks(1000);
        for (ActivityManager.RunningTaskInfo info : list) {
            ///< 如果直接进入推送详情或者广告详情,那么此时判断进程是存在的;但是主页页面并没有启动,所以不能用这种方式判断主页面是否或者!
            //            if (info.topActivity.getPackageName().equals(processName) &&
            //                info.baseActivity.getPackageName().equals(processName)) {
            //                isAppRunning = true;
            //                // find it, break
            //                break;
            //            }

            ///< 判断HomeActivity是否活着
            if (HomeActivity.class.getName().equals(info.baseActivity.getClassName())) {
                isAppRunning = true;
                // find it, break
                break;
            }
        }
        return isAppRunning;

然后你在详情页面返回增加判断处理跳转:

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK &&
            event.getAction() == KeyEvent.ACTION_DOWN) {
            ///< 判断主页面是否活着
            if (!SystemUtils.isAppAlive(InfoNewsDetailActivity.this, "xxx.xxx.xxx")) {
                Intent intent = new Intent(InfoNewsDetailActivity.this, HomeActivity.class);
                startActivity(intent);
            }
            finish();
        }
        return super.onKeyDown(keyCode, event);
    }

其他问题遇到了再看看怎么解决....

你可能感兴趣的:(通知栏推送点击跳转以及返回主界面(或指定页面))