設定などのアプリケーションの起動を検出しようとしています。すべてのアプリケーションの名前を取得できるサービスを作成し、アクティビティを開始します。起動したアプリケーションを停止し、バックグラウンドではなくフォアグラウンドでアクティビティを実行したいと考えています。私のサービスで使用されているコードを以下に示します。新しいアクティビティが起動されますが、まだバックグラウンドにあります。
public int onStartCommand(Intent intent, int flags, int startid) {
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
try {
ActivityManager am = (ActivityManager) context
.getSystemService(Activity.ACTIVITY_SERVICE);
final List<RunningTaskInfo> recentTasks = am
.getRunningTasks(Integer.MAX_VALUE);
Log.d("liste des applications ", recentTasks.toString());
for (int i = 0; i < recentTasks.size(); i++) {
Log.d("Executed app",
"Application executed : "
+ recentTasks.get(i).baseActivity
.toShortString() + "\t\t ID: "
+ recentTasks.get(i).id + "");
Log.d("============Executed app ======", recentTasks
.get(i).topActivity.getShortClassName());
if ((recentTasks.get(i).topActivity.getShortClassName()
.equals((".Settings"))) && (printed == false)) {
Log.d("*******====testestesttest====***********", recentTasks
.get(i).topActivity.getShortClassName());
Intent intent = new Intent(LogAnalyserService.this, LauncherGridActivity.class);
// intent.setClass(this, LauncherGridActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
printed = true;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}