2

私のアプリケーションでは、バックグラウンド サービスでトップ アクティビティ名をチェックしており、トップ アクティビティがデフォルトで Android の Chooser アクティビティでない場合は関数を呼び出します。そのアクティビティ名は「com.android.internal.app.ChooserActivity」であることがわかりました。だから私はそれをハードコーディングしてチェックしています。すべてが正常に機能しています。しかし、そのアクティビティ名が変更されるとどうなりますか (Google によって変更されます)。だから私の質問は、実行時にセレクターアクティビティを取得する方法はありますか?

4

1 に答える 1

0

バックグラウンドサービスで、ApplicationManagerを介してアクティビティのトップを取得するスレッドを実行してから、実行時にアクティビティのトップを比較できます。

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(); マニフェストには次の許可が必要です。

使用-許可android:name = "android.permission.GET_TASKS"

于 2013-03-14T09:53:27.040 に答える