これは、アクティビティ マネージャーを使用して行う良い方法です。基本的に、runningTasks はアクティビティ マネージャーから取得します。現在アクティブなタスクが常に最初に返されます。そこから topActivity を取得できます。
例はこちら
ActivityManager サービスから実行中のタスクのリストを取得する簡単な方法があります。電話で実行されているタスクの最大数を要求できます。デフォルトでは、現在アクティブなタスクが最初に返されます。
それができたら、リストから topActivity を要求して ComponentName オブジェクトを取得できます。
これが例です。
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
// get the info from the currently running task
List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);
Log.d("topActivity", "CURRENT Activity ::"
+ taskInfo.get(0).topActivity.getClassName());
ComponentName componentInfo = taskInfo.get(0).topActivity;
componentInfo.getPackageName();
マニフェストには次の権限が必要です。
uses-permission android:name="android.permission.GET_TASKS"