概述
Android开发中有时候会涉及到判断当前界面是否为桌面的情况,比如说开发桌面悬浮控件的时候或者手机桌面小精灵的时候。
原理
原理很简单,首先获取属于桌面应用的所有应用的包名,放在一个数组里面。
/**
* 获得属于桌面的应用的应用包名称
* 返回包含所有包名的字符串列表数组
* @return
*/
private List<String> getHomeApplicationList() {
List<String> names = new ArrayList<String>();
PackageManager packageManager = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);