2011-05-28 3 views
2

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

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

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

ответ

4

Это простой способ.

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 
+0

Вы били меня в течение нескольких секунд :) – Aleadam

+0

Спасибо за до голосования, пытаясь сделать репутацию, и сделать хорошее использование быть поздно! –

+0

с хорошими ответами вы быстро создадите репутацию :) – Aleadam

1

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

List<ActivityManager.RunningTaskInfo> getRunningTasks(); 

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

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

ComponentName на есть эти два открытых метода:

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); 
    } 
Смежные вопросы