当前位置:   article > 正文

Android应用退到后台,点击悬浮窗返回应用_movetasktofront

movetasktofront


方案1:

        系统设置中找到对应的应用,打开权限“后台弹出界面”,然后直接调用startActivity()方法
        缺点:1、需要开启权限 2、部分手机没这个权限


方案2:

        判断app是否在前台,如果不在前台调用moveTaskToFront()方法
        上代码:判断是否在前台的方法

  1. private boolean isAppRunningForeground(Context context) {
  2. ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
  3. assert activityManager != null;
  4. List<ActivityManager.RunningAppProcessInfo> runningAppProcessList = activityManager.getRunningAppProcesses();
  5. for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : runningAppProcessList) {
  6. if (runningAppProcessInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
  7. && runningAppProcessInfo.processName.equals(context.getApplicationInfo().processName)) {
  8. return true;
  9. }
  10. }
  11. return false;
  12. }

将应用拉到前台
 

  1. private Disposable disposable;
  2. private void moveAppToFront(Context context) {
  3. final ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
  4. assert activityManager != null;
  5. List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(100);
  6. for (final ActivityManager.RunningTaskInfo runningTask : runningTasks) {
  7. assert runningTask.topActivity != null;
  8. if (runningTask.topActivity.getPackageName().equals(context.getPackageName())) {
  9. activityManager.moveTaskToFront(runningTask.id, 0);
  10. disposable = Observable.intervalRange(1, 5, 0, 1, TimeUnit.SECONDS).subscribe(aLong -> {
  11. if(isAppRunningForeground(context)){
  12. Logger.i(TAG,"moveTaskToFront success");
  13. disposable.dispose();
  14. }else {
  15. Logger.i(TAG,"moveTaskToFront start");
  16. activityManager.moveTaskToFront(runningTask.id, 0);
  17. }
  18. });
  19. break;
  20. }
  21. }
  22. }

缺点:一次不一定成功,需求设置拉取次数反复去moveAppToFront();如果到了自己设定的次数还没成功,就会失败(目前测试没失败过)

方案3:

        参考跳转第三方应用方法,如果应用在后台调用下面方法将app拉到前台,这种方法回跳到app退到home之前到页面
 

  1. Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
  2. context.startActivity(intent);

缺点:部分手机拉起会慢几秒(测试效果与微信一样 )

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/247617
推荐阅读
相关标签
  

闽ICP备14008679号