Android根据uri获取图片的路径(4.4+)

原创 2015年07月08日 23:38:33

1. sdk4.4之前的版本

    uri:content://media/external/images/media/33581
    path:/storage/sdcard0/Pictures/media/xxx.jpg


   4.4之后uri变为 content://com.android.providers.media.documents/document/image:33581


2.如下方式打开相册

   intent.setAction(Intent.ACTION_GET_CONTENT);

  intent.setAction(Intent.ACTION_OPEN_DOCUMENT);(4.4+)

   intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); 则

public static String getImagePath(Uri uri, Context context) {
		String[] column = { MediaStore.Images.Media.DATA };
		if (null == uri) {
			return null;
		}
		final String scheme = uri.getScheme();
		String path = null;
		if (scheme == null)
			path = uri.getPath();
		else if (ContentResolver.SCHEME_FILE.equals(scheme)) {
			path = uri.getPath();
		} else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {
			
			if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
				String wholeID = DocumentsContract.getDocumentId(uri);
			    String id = wholeID.split(":")[1];
			    String sel = MediaStore.Images.Media._ID + "=?";
			    Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column,
			            sel, new String[] { id }, null);
			    int columnIndex = cursor.getColumnIndex(column[0]);
			    if (cursor.moveToFirst()) {
			    	path = cursor.getString(columnIndex);
			    }
			    cursor.close();
			} else {
				Cursor cursor = context.getContentResolver().query(uri, column, null, null, null);
				if (null != cursor) {
					if (cursor.moveToFirst()) {
						int index = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
						if (index > -1) {
							path = cursor.getString(index);
						}
					}
					cursor.close();
				}
			}
		    
		}
		return path;
	}


3.若是以下方式打开相册

   intent.setAction(Intent.ACTION_PICK);
   intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

  则不需要判断sdk版本,通用



android 通过uri获取bitmap图片并压缩

很多人在调用图库选择图片时会在onActivityResult中用Media.getBitmap来获取返回的图片,如下: Uri mImageCaptureUri = data.getData();...
  • jdsjlzx
  • jdsjlzx
  • 2016年04月18日 17:27
  • 14077

android 通过uri等方式读取图片资源

android:图片处理(本地uri图片显示,本地uri转为bitmap和网络uri转为bitmap显示) 2012-04-06 10:24:26| 分类: android 图片相关 | 标签:...
  • u011382076
  • u011382076
  • 2013年09月25日 21:20
  • 10849

android根据Uri得到图片文件的真实路径

/** * Try to return the absolute file path from the given Uri * * @param context * @param uri *...
  • CSDN_LQR
  • CSDN_LQR
  • 2016年09月18日 15:59
  • 1909

Android 根据URI获取图片(从相册选择图片后返回)

private Bitmap getBitmapFromUri(Uri uri) { Bitmap bitmap = null; try { B...
  • yiranhaiziqi
  • yiranhaiziqi
  • 2016年02月29日 12:13
  • 737

Android-->拍照/相册选择照片(从Uri中获取图片路径)

对于一个APP来说, 照片选择是经常会用到的功能.拍照获取照片 此方法需要指定照片的路径, 这是最简单的获取照片的方式了;/** * 拍照获取图片, imageUri.getPath() 图片路径...
  • angcyo
  • angcyo
  • 2016年10月10日 13:39
  • 3853

根据Uri获取图片绝对路径,解决Android4.4以上版本Uri转换

public static String getImageAbsolutePath(Activity activity, Uri imageUri){ Uri uri = null; if...
  • q445697127
  • q445697127
  • 2014年10月28日 11:32
  • 35835

android 根据uri获取路径及图片压缩、旋转的学习笔记

做项目用到了这些,根据uri取得图片或视频的路径,上传拍摄的照片,遇到的一些问题: 1. 4.4以前和以后(含4.4)的URI格式不一样 2. 拍照后返回的URI有可能为null 3. 拍照后的图片有...
  • wblyuyang
  • wblyuyang
  • 2015年04月23日 16:49
  • 2524

从相册取图片得到图片的uri再通过工具类得到图片的绝对路径

前段时间在项目一个Activity里点击一个按钮从本地相册里选一张图片然后回到该Activity,再点击提交,提交给后台服务器. 下面代码来了.... 1.首先点击控件调用下面这个方法,开启隐式意...
  • weichenxu1234
  • weichenxu1234
  • 2017年05月12日 11:24
  • 511

Android 从手机相册获取图片 uri 路径 从相机获取照片

从手机相册获取图片Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_O...
  • sinat_29962405
  • sinat_29962405
  • 2016年07月20日 23:57
  • 6315

android 获取uri的正确文件路径的办法

有时会从其他的文件浏览器获取路径,这时根据路径去数据库取文件时会发现不成功,原因是由于android的文件浏览器太多,各自返回的路径不统一,而android本身的数据库中的路径是绝对路径,即"/mnt...
  • fzh0803
  • fzh0803
  • 2012年05月24日 21:37
  • 31666
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android根据uri获取图片的路径(4.4+)
举报原因:
原因补充:

(最多只允许输入30个字)