赞
踩
系统设置中找到对应的应用,打开权限“后台弹出界面”,然后直接调用startActivity()方法
缺点:1、需要开启权限 2、部分手机没这个权限
判断app是否在前台,如果不在前台调用moveTaskToFront()方法
上代码:判断是否在前台的方法
- private boolean isAppRunningForeground(Context context) {
- ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
-
- assert activityManager != null;
- List<ActivityManager.RunningAppProcessInfo> runningAppProcessList = activityManager.getRunningAppProcesses();
-
- for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : runningAppProcessList) {
- if (runningAppProcessInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
- && runningAppProcessInfo.processName.equals(context.getApplicationInfo().processName)) {
- return true;
- }
- }
-
- return false;
- }
将应用拉到前台
- private Disposable disposable;
-
- private void moveAppToFront(Context context) {
- final ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
- assert activityManager != null;
- List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(100);
- for (final ActivityManager.RunningTaskInfo runningTask : runningTasks) {
- assert runningTask.topActivity != null;
- if (runningTask.topActivity.getPackageName().equals(context.getPackageName())) {
- activityManager.moveTaskToFront(runningTask.id, 0);
-
- disposable = Observable.intervalRange(1, 5, 0, 1, TimeUnit.SECONDS).subscribe(aLong -> {
- if(isAppRunningForeground(context)){
- Logger.i(TAG,"moveTaskToFront success");
- disposable.dispose();
- }else {
- Logger.i(TAG,"moveTaskToFront start");
- activityManager.moveTaskToFront(runningTask.id, 0);
- }
- });
-
-
- break;
- }
- }
- }

缺点:一次不一定成功,需求设置拉取次数反复去moveAppToFront();如果到了自己设定的次数还没成功,就会失败(目前测试没失败过)
参考跳转第三方应用方法,如果应用在后台调用下面方法将app拉到前台,这种方法回跳到app退到home之前到页面
- Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
- context.startActivity(intent);
缺点:部分手机拉起会慢几秒(测试效果与微信一样 )
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。