0

アクティビティではないクラス(これは、私のためにいくつかのアクションを実行しますが、アクティビティに制限されていない別のクラスです)から、どのアクティビティが前面にあるかを確認したいと思います。

このクラスから、実際に画面に表示されているアクティビティを確認するにはどうすればよいですか?

4

2 に答える 2

6

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"

ソース

于 2013-02-13T11:30:04.887 に答える
0

別の方法は、カスタム Application オブジェクトで「Activity lastActivityShown」というメンバーを作成し、すべてのアクティビティのすべての onCreate でgetApplication().setLastActivityShown(this)、この方法で許可を必要としないようにすることです。このロジックを持つ BaseActivity を作成し、これを拡張するすべてのアクティビティを取得することもできます。

于 2013-02-13T11:32:26.367 に答える