我正在构建一个应用程序,它可以自动对已安装的应用程序进行排序,并允许用户启动这些应用程序。我刚刚在使用相机应用程序时遇到了一个小问题。当我使用“queryIntentActivities”扫描已安装的应用程序以获取“ResolveInfo”时,我两次获得图库 ResolveInfo,这两个对象是相同的。我想知道我是否遗漏了一些明显的东西,或者相机根本无法从包名称启动。
如果相机和图库共享同一个包,我是否仍然可以使用包管理器为每个包提取图标和标签?我想避免使用我自己的 drawable,因为不同的 OEM 会制作不同的图标。
我知道我可以使用捕获图像 Intent 简单地启动相机,但我不关心结果,我想将相机作为一个独立的 Activity 启动,而且使用这个 Intent 并不能真正解决我的问题。
更新:
所以我收到的相机和画廊的 ResolveInfo 并不完全相同。它们共享相同的包名称,但我可以通过 ResolveInfo.loadLabel 和 ResolveInfo.loadIcon 提取它们各自的图标(而不是我用 ResolveInfo.ApplicationInfo 做的.loadLabel ... 返回相同的标签和图标)。但是,我仍然找不到任何方法来分别启动相机和画廊的 Activity 。
更新 2.0
问题已解决。我在 ResolveInfo.ActivityInfo.name 中找到了唯一的 Activity 字符串。现在不是使用包名称启动应用程序,而是使用该变量中列出的 Activity 启动它。
最佳答案
不,相机和图库的包管理器不同。
相机 - com.android.camera。 对于图库 - com.android.gallery。
这是您区分画廊和相机的方式。
关于安卓相机 : Does it have a unique package name?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18887089/