官方总结

https://developer.android.google.cn/training/data-storage?hl=zh-cn

Demo (MediaStore 访问相册图片)

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
/data/data/com.android.providers.media.module/databases/external.db
不同系统版本该文件位于不同目录下,/data/data/com.android.providers.media xxx/external.db

package com.cuncaojin.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.Manifest;
import android.annotation.SuppressLint;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.widget.ImageView;import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;/*** 外部存储数据库文件:/data/data/com.android.providers.media.module/databases/external.db,* 不同版本位置略有不同,有的在/data/data/com.android.providers.media/databases/external.db* <p>* su root* <p>* cd /data/data/com.android.providers.media.module/databases && ls -l* <p>* -rw-rw---- 1 u0_a119 u0_a119 131072 2022-03-07 14:23 external.db* -rw------- 1 u0_a119 u0_a119  32768 2022-03-07 16:31 external.db-shm* -rw------- 1 u0_a119 u0_a119 477952 2022-03-07 16:31 external.db-wal* -rw-rw---- 1 u0_a119 u0_a119 233472 2022-03-07 16:31 internal.db* -rw------- 1 u0_a119 u0_a119  32768 2022-03-07 16:31 internal.db-shm* -rw------- 1 u0_a119 u0_a119 524288 2022-03-07 16:31 internal.db-wal*/
public class MainActivity extends AppCompatActivity {public static final String SIMPLE_IMAGE_NAME = "IMG_20220307_142202.jpg";public static final String SIMPLE_IMAGE_NAME2 = "IMG_20220307_141816.jpg";private ImageView iv;private ImageView iv2;private Uri mUri;private Uri mUri2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);iv = findViewById(R.id.imageView);iv2 = findViewById(R.id.imageView2);requiresPermissions();}public static Uri getImageStreamFromExternal(String imageName) {File externalPubPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);File imageFile = new File(externalPubPath, imageName);// 等价// File imageFile = new File("/storage/emulated/0/Pictures/IMG_20220307_142202.jpg");Uri uri = null;if (imageFile.exists()) {uri = Uri.fromFile(imageFile);}return uri;}@SuppressLint("Range")public static Uri getMediaUriFromPath(Context context, String path) {Uri mediaUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;Cursor cursor = context.getContentResolver().query(mediaUri,null,MediaStore.Images.Media.DISPLAY_NAME + "= ?",new String[]{path.substring(path.lastIndexOf("/") + 1)},null);Uri uri = null;if (cursor.moveToFirst()) {uri = ContentUris.withAppendedId(mediaUri,cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media._ID)));}cursor.close();return uri;}public List<Uri> getAllShownImagesPath() {Uri uriExternal = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;Cursor cursor;int columnIndexID;List<Uri> listOfAllImages = new ArrayList<>();// /data/data/com.android.providers.media.module/databases/external.db// SELECT _id,//        _display_name//        _data,//   FROM images;// 45 /storage/emulated/0/Pictures/IMG_20220307_142051.jpg    IMG_20220307_142051.jpgString[] projection = new String[]{MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.DATA};Long imageId;cursor = getContentResolver().query(uriExternal, projection, null, null, null);if (cursor != null) {columnIndexID = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);int simpleNamePathId = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME);// 废弃字段,不要用int fullNamePathId = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);while (cursor.moveToNext()) {imageId = cursor.getLong(columnIndexID);String simpleNamePath = cursor.getString(simpleNamePathId);String fullNamePath = cursor.getString(fullNamePathId);if (SIMPLE_IMAGE_NAME2.equals(simpleNamePath)) {mUri2 = ContentUris.withAppendedId(uriExternal, imageId);// 或 Uri uriImage = Uri.withAppendedPath(uriExternal, "" + imageId);}Uri uriImage = ContentUris.withAppendedId(uriExternal, imageId);// 或 Uri uriImage = Uri.withAppendedPath(uriExternal, "" + imageId);listOfAllImages.add(uriImage);}cursor.close();}return listOfAllImages;}private void showAlbumPicture() {try {// 左图mUri = getImageStreamFromExternal(SIMPLE_IMAGE_NAME);Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), mUri);iv.setImageBitmap(bitmap);// 右图getAllShownImagesPath();Bitmap bitmap2 = MediaStore.Images.Media.getBitmap(getContentResolver(), mUri2);iv2.setImageBitmap(bitmap2);} catch (IOException e) {e.printStackTrace();}}/// EasyPermissions start /public static final int EXTERNAL_STORAGE_REQUEST_CODE = 111;@AfterPermissionGranted(EXTERNAL_STORAGE_REQUEST_CODE)private void requiresPermissions() {String[] perms = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};if (EasyPermissions.hasPermissions(this, perms)) {// Already have permission, do the thingshowAlbumPicture();} else {// Do not have permissions, request them nowEasyPermissions.requestPermissions(this, getString(R.string.app_name),EXTERNAL_STORAGE_REQUEST_CODE, perms);}}@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);// Forward results to EasyPermissionsEasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);}/// EasyPermissions end /
}

android 直接访问相册图片_MediaStore相关推荐

  1. Android获取本地相册图片

    Android获取本地相册图片 第一步设置静态权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_S ...

  2. android 调用相册权限,采坑之Android手机访问相册权限问题

    问题描述 Android端APP 在6.0以上系统无法访问相册和拍照 经过 1.项目是一个后期接手的项目,在早期开发版本中没有注册相机权限,使用拍照时直接调用相机没有做相机权限检测,部分国产手机(小米 ...

  3. 云豹app直播源码Android 端获取相册图片功能的具体实现教程

    app直播源码开发时,关于动态功能的实现,通常采用类似于朋友圈式图文+视频模式,这就需要通过访问手机相册获取用户图片进行下一步操作,接下来就请跟随小编一起,从app直播源码角度探究云豹直播系统在这个功 ...

  4. Android之本地相册图片选取和拍照以及图片剪辑

    转载请注明出处:http://blog.csdn.net/loveyaozu/article/details/51160482 相信有很多Android开发人员在日常开发中,由于项目需求,需要我们的A ...

  5. android访问图库,android通过访问相册获取图片并展示在ImageView中

    第一步:添加相应的权限以及属性: ①在manifest中设置权限 ②在中设置相应属性,这一步很关键,解决了我在这一方面最后的一个有关deny的权限问题 android:requestLegacyExt ...

  6. android通过访问相册获取图片并展示在ImageView中

    第一步:添加相应的权限以及属性: ①在manifest中设置权限 <uses-feature android:name="android.hardware.camera" / ...

  7. Android获取系统相册图片选中地址,获取手机中的所有图片地址自定义相册

    一.获取手机中的值 1.首先在使用读写sd卡权限 2.获取手机中的所有图片: 注意代码中的getGalleryPhotos(getContentResolver()) 方法获取所有地址 获取所有图片地 ...

  8. Android手机访问相册和打开照相机

    通过点击相册或照相机把相册或照相机拍照所得的图片设置为头像,其中java代码为: public class MyFragment extends Fragment implements OnClick ...

  9. Android实现拍照相册图片上传功能

    更改头像功能不像修改信息一样直接提交参数就可以,需要上传图片文件 我就直接贴代码了首先给出布局文件 <ImageViewandroid:id="@+id/iv"android ...

最新文章

  1. iOS学习资源(二)
  2. 235 Lowest Common Ancestor of a Binary Search Tree
  3. WOLF ISP CCIE 方向优惠最后10天,价格低至13800!!
  4. Ext FormPanel布局 (一行显示两对控件元素)
  5. httpurlconnect设置中文参数_数控三菱CNC机床参数的设置及报警解除!
  6. 2021年移动市场报告.pdf
  7. oracle里查询表的语句,Oracle查询用户所有表的语句
  8. 卷积神经网络 第三周作业 Keras+-+Tutorial+-+Happy+House+v1
  9. CentOS安装网络驱动
  10. Linux下Libtorch运行出现free(): invalid pointer报错
  11. \t\t中国机械工程师资格认证中心及各分中心通讯录
  12. python实现QQ空间自动点赞功能
  13. 启用FM模块后F-02创建会计凭证报错,消息号FI313 “在项目 1 (2/3/4)中未输入/派生出投资中心“ - FMDERIVE
  14. 【CSS3】一文搞懂盒子模型(知识点加案例)
  15. 照着别人的敲代码来学习编程好吗
  16. cropperjs处理图片预览裁切功能
  17. Java 比较日期/时间的大小
  18. Swagger2快速入门
  19. 深度强化学习中的好奇心
  20. python开发his系统_医院HIS系统调用钉钉开放平台的简单实例

热门文章

  1. Empire监听、木马、连接
  2. 账户管理UID,GID
  3. 大学辍学、自学编程,GitHub创始人是怎么号召2800万程序员的?
  4. SEVE-U 9显示乱码
  5. python开发游戏教程_Python开发星际游戏实例教程
  6. Shadows 阴影 光照系列8
  7. JAVA虚拟机程序计数器
  8. 绿色环保网站管理系统mysql
  9. 大数据面试简答题(三) -hive
  10. GIPHY软件实现快速制作gif动图