Как переключиться на другое работающее приложение - PullRequest
2 голосов
/ 28 мая 2011

Я хочу написать приложение для переключения на другое работающее приложение, например, «Переключиться на» в «Диспетчере задач Windows».

У меня уже есть имя пакета, имя процесса, pid, метка.Но я не знаю, как переключиться на это.Пожалуйста, помогите мне!Спасибо U!

P / S: Я думаю об использовании Intent, но Intent.setClassName (имя String pkname, имя String cls) нужно имя класса, и я не знаю, как его получить.

Ответы [ 2 ]

5 голосов
/ 28 мая 2011

Это просто.

    ActivityManager am = (ActivityManager) inst.getSystemService(Context.ACTIVITY_SERVICE);
    for(RunningTaskInfo t: am.getRunningTasks(10)){
        String packageName = t.topActivity.getPackageName();
        String className = t.topActivity.getClassName();
    }
    //Which one do you want?
    //Could also just do
    String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName();
    String className = am.getRunningTasks(1).get(0).topActivity.getClassName();

    //then
    startActivity(new Intent().setClassName(packageName, className).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    //Keep in mind you will need to declare the following permission in your AndroidManifest.xml
    android.Manifest.permission.GET_TASKS 
1 голос
/ 28 мая 2011

Использование

List<ActivityManager.RunningTaskInfo> getRunningTasks();

Возвращает список задач, запущенных на устройстве.

Если вы посмотрите на RunningTaskInfo API, есть поле public ComponentName baseActivity

ComponentName, on имеет следующие два открытых метода:

String getClassName()

Возвращает имя класса этого компонента.

String getPackageName()

Возвращает имя пакета этого компонента.

     ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
     for (ActivityManager.RunningTaskInfo info : am.getRunningTasks(9999)){
         int id = info.id;
         Log.d ("AM", "ID: " + id);
         String name = info.baseActivity.getClassName();
         Log.d ("AM", "Class: " + name);
     }
...