搜索
热搜: 活动 交友 discuz
查看: 4385|回复: 0
打印 上一主题 下一主题

Android4.4以上从图库选择图片返回的路径不正确解决方法

[复制链接]

160

主题

165

帖子

814

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
814
跳转到指定楼层
楼主
发表于 2016-7-21 13:56:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

针对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. }
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|安卓论坛  

GMT+8, 2024-5-18 11:43 , Processed in 0.068617 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Design S!|ƽ̶

快速回复 返回顶部 返回列表