我有某种LauncherApp
(从我的应用中轻松启动其他应用)。在某些设备上,我提到Camera
不在PackageManager
:
List<ApplicationInfo> appInfo = pm.getInstalledApplications(PackageManager.GET_META_DATA);
这是因为在此设备上Camera
不是应用程序,而是Gallery
- 应用程序中的活动!
问题是我的整个逻辑基于ApplicationInfos
而不是ActivityInfos
!
我设法通过意图获取相机的ActivityInfo:
Intent camera = new Intent(android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
camera.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ActivityInfo actInfoCamera = camera.resolveActivityInfo(getPackageManager(), 0);
现在使用actInfoCamera
我可以检索相机和标签的图标。这就是我所需要的。但我的整个计划现在又基于ApplicationInfo
。所以我需要将ActivityInfo
转换或转换为ApplicationInfo
(用于排序,检索图标和标签等)。
当我尝试这样做时:
actInfoCamera.applicationInfo;
我回到开头,ApplicationInfo
现在再次显示Gallery
和标签Gallery
的图标......或者当我尝试时:
ApplicationInfo appInfoCamera = (ApplicationInfo) actInfoCamera;
从ActivityInfo
转换为ApplicationInfo
无效。
所以我得到了两个问题:
1)有没有办法确定该设备上的相机是单个应用程序还是Gallery应用程序中的活动。因为我不想在我的应用程序列表中添加两次相同的相机应用程序。另请注意,用户可能会在其包名中包含一些其他相机应用程序,其中包含“相机”。我担心这不容易......
2)我如何获得activity
camera
gallery
ApplicationInfo
{{1}}作为{{1}}来完成一个简单的方法在我的整个逻辑中实施。
非常感谢任何帮助。
提前致谢!