我想寫一個應用程序切換到其他正在運行的應用程序,如「Windows任務管理器」上的「切換到」。如何切換到其他正在運行的應用程序
我已經有它的包名稱,進程名稱,PID,標籤。但我不知道如何切換到它。請幫助我!謝謝你! P/S:我在考慮使用Intent,但是Intent.setClassName(String pkname,String cls name)需要類名,我不知道如何獲取它。
我想寫一個應用程序切換到其他正在運行的應用程序,如「Windows任務管理器」上的「切換到」。如何切換到其他正在運行的應用程序
我已經有它的包名稱,進程名稱,PID,標籤。但我不知道如何切換到它。請幫助我!謝謝你! P/S:我在考慮使用Intent,但是Intent.setClassName(String pkname,String cls name)需要類名,我不知道如何獲取它。
這是一個容易的。
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
使用
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);
}
你打我幾秒鐘:) – Aleadam 2011-05-28 07:11:51
感謝您的投票,試圖做出代表,並充分利用遲到! – 2011-05-28 07:16:02
與很好的答案,你會快速建立一些代表:) – Aleadam 2011-05-28 07:20:14