android notification进入界面返回时,返回自己的App

来源:互联网 发布:编程用英语怎么说 编辑:程序博客网 时间:2024/06/07 17:23

判断App是否启动

boolean isAppStarted() {        ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);        List<ActivityManager.RunningAppProcessInfo> infos = am.getRunningAppProcesses();        for (ActivityManager.RunningAppProcessInfo info : infos) {            if (info.processName.equals(this.getPackageName())) {                return true;            }        }        return false;    }

若App已经启动状态

/**     * 得到Task栈,启动栈顶Activity,OrderCancelActivity属于单独的一个Task栈(会不会得到多个包含同一包名Activity的Task栈)     */void backToTask() {        ComponentName component = new ComponentName(getApplicationContext(), this.getClass());         ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {            List<ActivityManager.AppTask> tasks = manager.getAppTasks();            for (ActivityManager.AppTask task : tasks) {                if (task.getTaskInfo().baseIntent.getComponent().getPackageName().equals(component.getPackageName())) {                    finish();                    task.moveToFront();                    break;                }            }        } else {            List<ActivityManager.RunningTaskInfo> runningTasks = manager.getRunningTasks(2);            for (ActivityManager.RunningTaskInfo info : runningTasks) {                if (!info.baseActivity.getClassName().contains(getClass().getName())                        && info.baseActivity.getPackageName().equals(component.getPackageName())) {                    finish();                    //requires android.permission.REORDER_TASKS                    manager.moveTaskToFront(info.id, ActivityManager.MOVE_TASK_WITH_HOME);                    break;                }            }        }    }

若App未启动则重新启动App(两种方式)

void startApp() {        ComponentName componentName = new ComponentName(this, StartActivity.class);        Intent intent = new Intent();        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        intent.setComponent(componentName);        startActivity(intent);//        Intent intent1 = getPackageManager().getLaunchIntentForPackage(getPackageName());//        startActivity(intent1);        finish();    }

注:使用notification进入Activity时,用:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

阅读全文
0 0
原创粉丝点击