그러냐

다른 태스크에서 실행 중인 앱을 화면(foreground)으로 불러오기(How to bring another app running in other task to foreground ) 본문

android

다른 태스크에서 실행 중인 앱을 화면(foreground)으로 불러오기(How to bring another app running in other task to foreground )

관절분리 2016. 1. 28. 11:01
반응형

다른 태스크에서 실행 중인 앱을 화면(foreground)으로 불러오기(How to bring another app running in other task to foreground ) 11 버전 이상에서만 된다넹 
 

아래 두 가지 퍼미션이 필요함.
<uses-permission android:name="android.permission.GET_TASKS"/> 
<uses-permission android:name="android.permission.REORDER_TASKS" />

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // 11
    for (int i = 0; i < recentTasks.size(); i++)
    {
       APLog.d(TAG, CLASS, "Application executed : "
               +recentTasks.get(i).baseActivity.getPackageName()
               + "\t ID: "+recentTasks.get(i).id+""); 
       // bring to front
       if (recentTasks.get(i).baseActivity.getPackageName().equals(savedList.get(selectedIndex).packageName)) {                    
          activityManager.moveTaskToFront(recentTasks.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME);
       }
    }
}
else {
     
}


위에 처럼 하면 생기는 문제점이 하나 있다. 한번 실행하고 종료시켰는데도 recentTaskInfo 가 살아있어서 실행시키는 앱이 사라진다. 그래서 이렇게 하는 게 사실 더 좋다. 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // 11
     
    final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    final List<RecentTaskInfo> recentTasks = activityManager.getRecentTasks(Integer.MAX_VALUE, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
     
    RecentTaskInfo recentTaskInfo = null;
     
    for (int i = 0; i < recentTasks.size(); i++)
    {
        if (recentTasks.get(i).baseIntent.getComponent().getPackageName().equals(packageName)) {
           recentTaskInfo = recentTasks.get(i);
           break;
        }
    }
     
    if(recentTaskInfo != null && recentTaskInfo.id > -1) {
        activityManager.moveTaskToFront(recentTaskInfo.persistentId, ActivityManager.MOVE_TASK_WITH_HOME);
        return;
    }
}



출처 : http://blog.hansune.com/519

반응형