Android 如何获取默认相机和多媒体资料包信息?

Android 如何获取默认相机和多媒体资料包信息?,android,kotlin,android-camera,android-gallery,Android,Kotlin,Android Camera,Android Gallery,我想创建一个对话框,让用户选择相机或画廊来选择图像。 对话框中的每个项目都需要一个图标和一个图像。 如何为默认相机和多媒体资料获取这些内容 更新 我现在是这样得到的 val galleryIntent = Intent(Intent.ACTION_GET_CONTENT).apply { setType("image/*") addCategory(Intent.CATEGORY_OPENABLE) putExtra(Intent.EXTRA_MIME_TYPES, ar

我想创建一个对话框,让用户选择相机或画廊来选择图像。 对话框中的每个项目都需要一个图标和一个图像。 如何为默认相机和多媒体资料获取这些内容

更新

我现在是这样得到的

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))
然后在“回收器视图”对话框中,我可以得到如下图标和名称

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))

没有更好的解决方案吗?

如果您要开始这两个目的

Intent(MediaStore.ACTION_IMAGE_CAPTURE)
Intent(Intent.ACTION_GET_CONTENT) 
如果选择了相应的参数,Android将分别使用相应的参数(但没有选择器)打开默认应用程序。

Intent intent =new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
摄像机意图

Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

问题是关于获取包裹信息,而不是意图。问题是关于获取包裹信息,而不是意图。由于您对这两个答案不满意,因此不清楚您想要实现什么。如果您想用两个按钮启动相机或多媒体资料,您可以提供自己的两个图标,并使用答案中的意图。如果您需要应用程序本身,您也可以使用这个答案:packageManager.resolveActivity,这个链接上的答案正是我想要的。这里唯一缺少的是MATCH_DEFAULT_only标志,它确保返回与startActivity相同的活动。谢谢你,克里斯蒂安!