针对android4.4及以上选择图片解决方法:
方法1:
- Intent intent = new Intent();
- intent.setType("image/*");//可选择图片视频
- //修改为以下两句代码
- intent.setAction(Intent.ACTION_PICK);
- intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);//使用以上这种模式,并添加以上两句
- startActivityForResult(intent, Select);
复制代码在android中选择图片时,打开相册选择图片(根据是否是4.4及以上设置不同action),代码如下:
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {//4.4及以上
- intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
- } else {//4.4以下
- intent.setAction(Intent.ACTION_GET_CONTENT);
- };
复制代码
在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,要获取图片的存储路径需要,根据系统的版本使用不同的方法获得,代码如下:
- if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT){//4.4及以上
- String wholeID = DocumentsContract.getDocumentId(contentUri);
- String id = wholeID.split(:)[1];
- String[] column = { MediaStore.Images.Media.DATA };
- 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()) {
- filePath = cursor.getString(columnIndex);
- }
- cursor.close();
- }else{//4.4以下,即4.4以上获取路径的方法
- String[] projection = { MediaStore.Images.Media.DATA };
- Cursor cursor = context.getContentResolver().query(contentUri, projection, null, null, null);
- int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
- cursor.moveToFirst();
- filePath = cursor.getString(column_index);
- }
复制代码
|