判断当前界面是否是桌面:
public boolean isHome() {
String packname = "";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
List<UsageStats> queryUsageStats = getUsageStats();
if (queryUsageStats != null && !queryUsageStats.isEmpty()) {
UsageStats recentStats = null;
for (UsageStats usageStats : queryUsageStats) {
if (recentStats == null
|| recentStats.getLastTimeUsed() < usageStats.getLastTimeUsed()) {
recentStats = usageStats;
}
}
packname = recentStats.getPackageName();
}
} else {
List<RunningTaskInfo> rti = mAManager.getRunningTasks(1);
packname = rti.get(0).topActivity.getPackageName();
}
return getHomes().contains(packname);
}
获得属于桌面的应用的应用包名称:
private List<String> getHomes() {
List<String> names = new ArrayList<String>();
PackageManager packageManager = BaseApp.APP.getPackageManager();
// 属性
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo ri : resolveInfo) {
names.add(ri.activityInfo.packageName);
}
return names;
}