2011-05-28 50 views
2

我想写一个应用程序切换到其他正在运行的应用程序,如“Windows任务管理器”上的“切换到”。如何切换到其他正在运行的应用程序

我已经有它的包名称,进程名称,PID,标签。但我不知道如何切换到它。请帮助我!谢谢你! 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 2011-05-28 07:11:51

+0

感谢您的投票,试图做出代表,并充分利用迟到! – 2011-05-28 07:16:02

+0

与很好的答案,你会快速建立一些代表:) – Aleadam 2011-05-28 07:20:14

1

使用

List<ActivityManager.RunningTaskInfo> getRunningTasks(); 

返回在设备上运行的任务列表。

如果你看一下RunningTaskInfo API,还有一个场public ComponentName baseActivity

组件名,上有两个公共方法:

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); 
    } 
相关问题