【问题标题】:How to get default camera and gallery package info?如何获取默认相机和图库包信息?
【发布时间】:2020-01-07 19:04:44
【问题描述】:

我想创建一个对话框,让用户可以选择相机或画廊来从中挑选图像。 对话框中的每个项目都需要一个图标和一个图像。 如何获取默认相机和图库的那些?

更新

我现在是这样的

val galleryIntent = Intent(Intent.ACTION_GET_CONTENT).apply {
    setType("image/*")
    addCategory(Intent.CATEGORY_OPENABLE)
    putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("image/jpeg", "image/png"))
}
val galleryResInfo = packageManager.queryIntentActivities(galleryIntent, 0)[0]

然后在对话框回收器视图持有人我可以得到这样的图标和名称

val packageManager = holder.appName.context.packageManager
holder.appIcon.setImageDrawable(app.resolveInfo.loadIcon(packageManager))
holder.appName.setText(app.resolveInfo.loadLabel(packageManager))

难道没有更好的解决方案吗?

【问题讨论】:

  • 由于您对这两个答案不满意,因此不清楚您想要实现什么。如果您想使用两个按钮启动相机或图库,您可以为此提供自己的两个图标并使用答案中的意图。如果您需要应用程序本身,您也可以使用该答案:stackoverflow.com/a/23172341/1505074
  • packageManager.resolveActivity 来自该链接的答案正是我想要的。唯一缺少的是 MATCH_DEFAULT_ONLY 标志,它确保返回与 startActivity 相同的活动。谢谢你,克里斯蒂安!

标签: android kotlin android-camera android-gallery


【解决方案1】:

如果你正在启动两个意图

Intent(MediaStore.ACTION_IMAGE_CAPTURE)
Intent(Intent.ACTION_GET_CONTENT) 

单独设置相应参数但没有选择器,如果有选择,Android将打开默认应用程序。

【讨论】:

  • 问题是关于获取包裹信息,而不是意图。
【解决方案2】:

画廊意图

Intent intent =new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

相机意图

Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

【讨论】:

  • 问题是关于获取包裹信息,而不是意图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
  • 2012-04-20
相关资源
最近更新 更多