您的位置:首页 > 其它

Intent.ACTION_GET_CONTENT和Intent.ACTION_PICK的使用区别

2017-07-08 16:51 375 查看
 
在android中选择图片的时候,打开相册选择图片(根据是否4.4设置不同action),
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
} else {
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){

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{

String[] projection = { MediaStore.Images.Media.DATA };

Cursor cursor = context.getContentResolver().query(contentUri, projection, null, null, null);

int column_i
4000
ndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

cursor.moveToFirst();

filePath = cursor.getString(column_index);

}。
另一种方式就是直接设置打开相册的action,
intent.setAction(Intent.ACTION_PICK);
intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
后面的onActivityResult里面就可以不区分4.4版本就可以获取到路径。
总的来说第一种方式的效果对于4.4的界面看起来很不错的,如果只求功能第二种就简便一些了。
使用过程中的一些体会,如有不当望指正...


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: