現在開いているアプリケーションのパッケージ名を取得しようとしていますが、kitkat を取得しましたが、android lollipop では機能しません。毎回インストール アプリケーションのパッケージ名が返されます。なぜこれが起こっているのかわかりません。コード
private void getAppInfoLowerLolipop(Context aContext) {
ActivityManager am = (ActivityManager) aContext
.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> alltasks = am.getRunningTasks(1);
for (ActivityManager.RunningTaskInfo aTask : alltasks) {
System.out.println("==== Not Package Name : "
+ aTask.topActivity.getPackageName().toString());
}
}
アンドロイドのロリポップとマシュマロの場合
private void getAppInfoForLolipop(Context context) {
try {
ActivityManager.RunningAppProcessInfo.class
.getDeclaredField("processState");
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> appList = am
.getRunningAppProcesses();
System.out.println("==== Lolipop Package Name : "
+ appList.get(0).processName.toString());
} catch (Exception ignored) {
System.out.println("==== Error Lolipop : " + ignored);
}
}
そして、マニフェストファイルで、最近のタスクを取得する許可を与えます
<uses-permission android:name="android.permission.GET_TASKS" />