大家知道Android 5.0之后之前的获取TopActivity方法无可用了,网上还有一些关于让用户勾选什么状态的。有个方法可以处理这个问题,看代码:
public static String getTopPackageName(Context context) {
String packageName = "";
try {
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
if (getOSVersion() > 20) {// 5.0及以上版本用这种方法获取顶层包名
List<ActivityManager.RunningAppProcessInfo> processInfos = am
.getRunningAppProcesses();
if (processInfos != null) {
for (ActivityManager.RunningAppProcessInfo processInfo : processInfos) {
if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
return processInfo.pkgList[0];
}
}
}
} else {
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
packageName = cn.getPackageName();
}
} catch (Exception e) {
// handel exception
}
return packageName;
}