2011-05-28 17 views
2

「Windowsタスクマネージャ」の「切り替え」のように、実行中の他のアプリケーションに切り替えるためのアプリケーションを作成します。実行中の他のアプリケーションに切り替える方法

私はすでにパッケージ名、プロセス名、pid、ラベルを持っています。しかし、私はそれに切り替える方法を知らない。 Plsは私を助ける!ありがとう!

P/S:私はインテントを使用することを考えていますが、Intent.setClassName(String pkname、String cls name)クラス名が必要ですが、取得方法はわかりません。

答えて

4

これは簡単なものです。

List<ActivityManager.RunningTaskInfo> getRunningTasks(); 

を使用して

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

は、デバイス上で実行されているタスクのリストを返します。あなたはRunningTaskInfo APIを見れば

は、これら2つのパブリックメソッドを持っている上、フィールド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); 
    } 
関連する問題