安卓论坛

标题: Android4.4以上从图库选择图片返回的路径不正确解决方法 [打印本页]

作者: admin    时间: 2016-7-21 13:56
标题: Android4.4以上从图库选择图片返回的路径不正确解决方法
原文地址: http://y.dobit.top/Detail/61.html

针对android4.4及以上选择图片解决方法:

方法1:

  1. Intent intent = new Intent();
  2. intent.setType("image/*");//可选择图片视频
  3. //修改为以下两句代码
  4. intent.setAction(Intent.ACTION_PICK);
  5. intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);//使用以上这种模式,并添加以上两句
  6. startActivityForResult(intent, Select);
复制代码
在android中选择图片时,打开相册选择图片(根据是否是4.4及以上设置不同action),代码如下:

  1. if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {//4.4及以上
  2.                     intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
  3.                 } else {//4.4以下
  4.                     intent.setAction(Intent.ACTION_GET_CONTENT);
  5.                 };
复制代码

在onActivityResult里面返回的Uri uri = data.getData();如果是android4.4 uri格式为content://com.android.providers.media.documents/document/image:3952,4.4以下格式为
content://media/external/images/media/3951,要获取图片的存储路径需要,根据系统的版本使用不同的方法获得,代码如下:

  1. if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT){//4.4及以上
  2.     String wholeID = DocumentsContract.getDocumentId(contentUri);
  3.     String id = wholeID.split(:)[1];
  4.     String[] column = { MediaStore.Images.Media.DATA };
  5.     String sel = MediaStore.Images.Media._ID + =?;
  6.     Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column,
  7.             sel, new String[] { id }, null);
  8.     int columnIndex = cursor.getColumnIndex(column[0]);
  9.     if (cursor.moveToFirst()) {
  10.         filePath = cursor.getString(columnIndex);
  11.     }
  12.     cursor.close();
  13. }else{//4.4以下,即4.4以上获取路径的方法
  14.     String[] projection = { MediaStore.Images.Media.DATA };
  15.     Cursor cursor = context.getContentResolver().query(contentUri, projection, null, null, null);
  16.     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  17.     cursor.moveToFirst();
  18.     filePath = cursor.getString(column_index);
  19. }
复制代码






欢迎光临 安卓论坛 (http://android.hh85.com/) Powered by Discuz! X3.2