您的位置:首页 > 移动开发 > Android开发

Android L 5.0版本获取topActivity的方法

2015-08-20 17:19 531 查看
Android L版本中getRunningTasks已经失效

需要添加权限:

<uses-permission android:name="android.permission.GET_TASKS"/>


[/code]

public static String getTopPkgName(Context context) {
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
Field field = null;
try {
field = RunningAppProcessInfo.class
.getDeclaredField("processState");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
List<ActivityManager.RunningAppProcessInfo> processInfos = am
.getRunningAppProcesses();
for (RunningAppProcessInfo app : processInfos) {
if (app.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND
&& app.importanceReasonCode == 0) {
Integer state = null;
try {
state = field.getInt(app);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
if (state != null && state == 2) {
if (app.pkgList.length > 0) {
Mlog.d(TAG, "---L getTopPkgName: " + app.pkgList[0]);
return app.pkgList[0];
}
}
}
}
} else {
List<RunningTaskInfo> runningTasks = am.getRunningTasks(1);
if (runningTasks != null && runningTasks.size() > 0) {
RunningTaskInfo runningTaskInfo = runningTasks.get(0);
ComponentName topActivity = runningTaskInfo.topActivity;
String packageName = topActivity.getPackageName();
Mlog.d(TAG, "---getTopPkgName: " + packageName);
return packageName;
}
}
Mlog.d(TAG, "---getTopPkgName: NULL");
return null;
}


参考:
http://stackoverflow.com/questions/24625936/getrunningtasks-doesnt-work-in-android-l http://blog.csdn.net/wulianghuan/article/details/46348043
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: