アクティビティではないクラス(これは、私のためにいくつかのアクションを実行しますが、アクティビティに制限されていない別のクラスです)から、どのアクティビティが前面にあるかを確認したいと思います。
このクラスから、実際に画面に表示されているアクティビティを確認するにはどうすればよいですか?
アクティビティではないクラス(これは、私のためにいくつかのアクションを実行しますが、アクティビティに制限されていない別のクラスです)から、どのアクティビティが前面にあるかを確認したいと思います。
このクラスから、実際に画面に表示されているアクティビティを確認するにはどうすればよいですか?
ActivityManagerを使用してこれを取得できます。サンプルコードは次のとおりです。
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;
String packageName = componentInfo.getPackageName();
マニフェストには次の権限が必要です。
uses-permission android:name="android.permission.GET_TASKS"
別の方法は、カスタム Application オブジェクトで「Activity lastActivityShown」というメンバーを作成し、すべてのアクティビティのすべての onCreate でgetApplication().setLastActivityShown(this)
、この方法で許可を必要としないようにすることです。このロジックを持つ BaseActivity を作成し、これを拡張するすべてのアクティビティを取得することもできます。