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

判断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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值