在相机意图中显示图片库
Posted
技术标签:
【中文标题】在相机意图中显示图片库【英文标题】:Show image gallery in camera intent 【发布时间】:2018-08-27 16:47:54 【问题描述】:我正在开发一项功能,用户可以在其中拍照并从图库中进行选择。这基本上是它开始并继续将图像保存在数据库中的地方。
private void showPictureDialog()
AlertDialog.Builder pictureDialog = new AlertDialog.Builder(this);
pictureDialog.setTitle("Select Action");
String[] pictureDialogItems =
"Select photo from gallery",
"Capture photo from camera" ;
pictureDialog.setItems(pictureDialogItems,
new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
switch (which)
case 0:
choosePhotoFromGallary();
break;
case 1:
takePhotoFromCamera();
break;
);
pictureDialog.show();
但是,我想让用户体验更好。我想跳过用户选择其中一个选项(从画廊或相机)的对话框,而是在相机意图中显示画廊。类似的东西:
我希望你明白我的意思。谢谢:)
【问题讨论】:
【参考方案1】:-
获取所有图片
public List<File> getAllShownImagesPath(Context context)
//get all images
String[] columns = MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_ADDED, MediaStore.Images.Media.SIZE;
List<File> result = new ArrayList<>();
File f = null;
final Cursor cursor = context.getContentResolver().
query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, // Specify the provider
columns, // The columns we're interested in
null, // A WHERE-filter query
null, // The arguments for the filter-query
MediaStore.Images.Media.DATE_ADDED + " DESC"
);
if (cursor != null)
cursor.moveToFirst();
for (int r = 0; r < cursor.getCount(); r++, cursor.moveToNext())
int i = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.SIZE));
//int l = cursor.getString(1).length();
final int image_path_col = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
if (i > 0)
f = new File(cursor.getString(image_path_col));
if (f.length() > 0)
result.add(f);
cursor.close();
return result;
-
将所有图片添加到recyclerview或listview中
【讨论】:
如何在相机意图中显示图像列表? 您应该为带有recyclerview的相机自定义布局包含所有图像,有关自定义相机布局的示例:***.com/questions/8543244/custom-camera-android以上是关于在相机意图中显示图片库的主要内容,如果未能解决你的问题,请参考以下文章
为啥我没有收到来自我的相机意图的任何图片(在 Android 中)