0

どのアプリケーションまたはアクティビティが現在フォアグラウンドにあるか、作成したサービスからユーザーによって使用されているかを確認しようとしていました。

 ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(
                        Context.ACTIVITY_SERVICE);

                List<ActivityManager.RunningAppProcessInfo> processList = am.getRunningAppProcesses();
String cProcess = processList.get(0).processName;

ただし、別のアクティビティがフォアグラウンドにある場合でも、com.android.systemui や com.android.buetooth などのサービスが表示されることがあります。

これはアクティビティではなくサービスをチェックしていると思います.現在フォアグラウンドにあるアプリケーションを確認するためのより信頼できる方法はありますか?

4

3 に答える 3

2

Android 開発者は、アプリケーションのコア機能を使用しないように警告しているactivityManager.getRunningTasks()ことに注意してください。ActivityManager

于 2012-10-25T16:00:49.887 に答える
0

これは魅力のように機能します..JRaymondに感謝します:

ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(
                    Context.ACTIVITY_SERVICE);

            List<ActivityManager.RunningTaskInfo> processList = am.getRunningTasks(3);


            String cProcess = processList.get(0).baseActivity.getPackageName();
于 2012-10-25T16:12:24.427 に答える
0

プロセスの重要性を確認してみてください:

List<RunningAppProcessInfo> appProcesses= null;
appProcesses = activityManager.getRunningAppProcesses();
if (appProcesses!=null) {

    for (RunningAppProcessInfo appProcess : appProcesses) {
        if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
            // Log.d("MYTAG",appProcess.processName+":"+appProcess.importance+" is foreground");
        }
    }
}
于 2012-10-25T16:09:30.897 に答える