大家都知道怎么取android自带的相册的图片数据。这里简单贴一点代码:
在onActivityResult里面添加
Uri uri = data.getData();
Cursor cursor = getContentResolver().query(uri, null,null, null, null);
cursor.moveToFirst();
srcFile = cursor.getString(1);
cursor.close();
Bitmap bitmap = ImageUtils.decodeFile(srcFile);
即可。
但是呢,往往有一些第三方的相册,使用这种方法取图片的时候报空指针异常,很不让人省心!
那为什么会这样?
因为我们的android相册取图片的时候uri是content类型的(类似content://这样),所以可以用 contentresolver来取图片。但是第三方的相册的uri往往是file类型的(类似file://这样)所以在
Cursor cursor = getContentResolver().query(uri, null,null, null, null);这句话的时候cursor为null了。
解决方法(纯属自己的笨办法):
Uri uri = data.getData();
String srcFile;
if (uri.toString().startsWith("file://")) {
srcFile = uri.toString().replace("file://", "");
} else {
Cursor cursor = getContentResolver().query(uri, null,null, null, null);
cursor.moveToFirst();
srcFile = cursor.getString(1);
cursor.close();
}
Bitmap bitmap = ImageUtils.decodeFile(srcFile);
也就是说,如果uri是file类型的,我就直接取得uri的file路径,如果是content类型的,就用contentresolver来取数据。