java打算在Android中的相机或图库中进行选择
我正试图启动一个从相机或安卓 gallery中挑选图像的意图。我查看了THIS帖子,目前我的代码即将生效:
private Intent getPickIntent() {
final List<Intent> intents = new ArrayList<Intent>();
if (allowCamera) {
setCameraIntents(intents, cameraOutputUri);
}
if (allowGallery) {
intents.add(new Intent(Intent.ACTION_PICK, 安卓.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI));
}
if (intents.isEmpty()) return null;
Intent result = Intent.createChooser(intents.remove(0), null);
if (!intents.isEmpty()) {
result.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents.toArray(new Parcelable[] {}));
}
return result;
}
private void setCameraIntents(List<Intent> cameraIntents, Uri output) {
final Intent captureIntent = new Intent(安卓.provider.MediaStore.ACTION_IMAGE_CAPTURE);
final PackageManager packageManager = context.getPackageManager();
final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0);
for (ResolveInfo res : listCam) {
final String packageName = res.activityInfo.packageName;
final Intent intent = new Intent(captureIntent);
intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
intent.setPackage(packageName);
intent.putExtra(MediaStore.EXTRA_OUTPUT, output);
cameraIntents.add(intent);
}
}
当我设置allowCamera=true
时,它工作正常
当我设置allowGallery=true
时,它会显示以下选择器:
但是如果我设置allowCamera=true
和allowGallery =true
,则显示的选择器是:
如果选择Android System
,则会显示第一个选择器
我希望选择器是这样的:
如何“扩展”Android System
选项
# 1 楼答案
您可能需要为此创建一个自定义对话框:
以下是当用户单击特定按钮时要调用的方法的代码:
以及处理
onActivityResult()
的代码:编辑: 尝试使用以下方法:
# 2 楼答案
In your linked post你可以找到解决方案。代码的不同之处在于画廊意图的创建方式:
不是因为
ACTION_PICK
你是怎么做的,而是因为ACTION_GET_CONTENT
。看起来,如果列表中有一个ACTION_PICK
(“容器意图”),系统会遍历它以显示拾取的内容,但一旦包含相机意图,它就不能再遍历了(因为有一个直接意图和一个容器意图)在this answer的注释中,你可以找到
ACTION_PICK
和ACTION_GET_CONTENT
之间的区别有一些解决方案建议使用自定义对话框。但是这个对话框没有标准图标(参见develper docshere)。因此,我建议您继续使用您的解决方案,解决层次结构问题