2

現在フォアグラウンドで実行されているアプリケーションをチェックするサービスを実行しています。次のコードは、現在フォアグラウンドのアプリ名を提供します。

ActivityManager activityManager = (ActivityManager)
getSystemService(Context.ACTIVITY_SERVICE);
ListappProcesses=activityManager.getRunningTasks(1);

//get foreground App name 
 foregroundApp=appProcesses.get(0).topActivity.getPackageName();

ここで、このコードを service 内に配置します。サービスは、フォアグラウンド アプリが変更されたかどうかを 15 秒ごとにチェックします。フォアグラウンド アプリが変更された場合、フォアグラウンド変数が更新されます。foregroundApp 変数の値が変更されたときにどのように比較できますか??

4

3 に答える 3

2
  boolean isChanged = false;
  String packageName = appProcesses.get(0).topActivity.getPackageName();
  if(!packageName.equals(foregroundApp)) {
      foregroundApp = packageName;
      isChanged = true;
  }

  if(isChanged) {
        // do your implementation if another app comes to foreground
  }
于 2012-09-17T11:21:30.493 に答える
0

最後のパッケージ名を静的な文字列に保存することも、SharedPreferencesを使用して保存することもできます...次のチェックでは、文字列を(String.compareを使用して)比較するだけです。

于 2012-09-17T11:19:41.940 に答える
0

appnameを別の文字列に格納し、foregroundApp文字列で確認できます

于 2012-09-17T11:20:27.047 に答える