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
  • 11559

Android中本地图片地址和Uri的相互装换

Android中本地图片地址和Uri的相互装换 前言: 项目中我们在用到手机中的相片的时候,因为需求不同,手机型号不同,我们需要将获取到的路径转成uri,或者将获取到的uri转成绝对路径。比如我的...

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

public static String getImageAbsolutePath(Activity activity, Uri imageUri){ Uri uri = null; if...

android 图片路径path和uri之间的相互转换

android 图片路径path和uri之间的相互转换

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

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

android系统通过图片绝对路径获取URI的三种方法

最近做项目要通过图片的绝对路径找到图片的URI,然后删除图片,小小总结一下获取URI的方法,亲自试验在 android 4.1.3的系统上都是可用的。   1.将所有的图片路径取出,遍历比较找到...

android图片文件的路径地址与Uri的相互转换

uri ---> 绝对路径 /** * Try to return the absolute file path from the given Uri * * @param context *...

安卓调用系统的图库选择图片并获取Uri路径

addImg.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ...

android 通过图片的uri来获取图片的绝对路径

/**      * 通过uri获取文件的绝对路径      *      * @param uri      * @return      */     private String ...

android图片文件的路径地址与Uri的相互转换

一个android文件的Uri地址一般如下: content://media/external/images/media/62026 这是一张图片的Uri,那么我们如何根据这个Uri获得其...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android根据uri获取图片的路径(4.4+)
举报原因:
原因补充:

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