我正在开发一个自定义启动器应用程序。我想获取诸如“我的设备上安装了多少个摄像头、消息或浏览器应用程序”之类的信息,可以是默认应用程序还是第三方应用程序?如果对此有任何想法,请建议我。
提前致谢
您可以使用PackageManager
来了解已安装的应用程序。但是,您没有可靠的方法来确定其中哪些是“相机”或“消息”或“浏览器”。
要获得所需的信息,您需要使用PackageManager
class 以及它提供的任何其他内容。例如,以下代码检索可用“应用程序”列表,即在各自的 AndroidManifest 文件中使用 Launch Intent 定义的活动 - 以及包含它们的 .app 文件、启动器标签和图标等。
PackageManager pm = getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
String _label, _class, _src;
Drawable _icon;
for (ResolveInfo rInfo : pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED)) {
if (pm.getLaunchIntentForPackage(rInfo.activityInfo.packageName) == null) {
continue;
}
_class = rInfo.activityInfo.packageName;
_label = rInfo.activityInfo.loadLabel(pm).toString();
_src = rInfo.activityInfo.applicationInfo.sourceDir;
_icon = rInfo.activityInfo.loadIcon(pm);
Log.d("PackageList", "label: " + _label + ", package: " + _class + ", sourceDir: " + _src + ", icon: " + (_icon == null ? "blank" : "present"));
}