ここ最近タスク関連を触ることが多かったので色々調べることができました。後々の自分用にまとめとくことにします。
1) 最近起動されたタスクリストを取得
ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RecentTaskInfo> recentTaskList = am.getRecentTasks(30, ActivityManager.RECENT_WITH_EXCLUDED);
2) ComponentNameからアプリケーションを起動
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(recentTaskList.get(currentIndex).baseIntent.getComponent());
3) 文字列からアプリケーションを起動(SharedPreferenceなどに記憶させておきたい時など)
Intent app = new Intent(Intent.ACTION_MAIN);
app.addCategory(Intent.CATEGORY_LAUNCHER);
app.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
app.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
String[] ta = taskArray[i].split("/"); // taskArray[i] == "com.hoge/com.hoge.Hoge"
app.setComponent(new ComponentName(ta[0], ta[1]));
try
{
context.startActivity(app);
}
catch(ActivityNotFoundException e)
[...]

最近のコメント