天天看点

Android---相册getContentResolver().query结果为空指针(因为android版本引起)

针对公司14年代码在小米6手机上图片选择不上,原来因为android版本升级,uri形式变化所致

测试如下代码:

1. Uri uri = data.getData();
2. String[] proj = {MediaStore.Images.Media.DATA};
3. //Cursor cursor = managedQuery(uri, proj, null, null, null);
4. Cursor cursor = getContentResolver().query(uri, proj, null, null, null);
5. cursor.moveToFirst();
6. int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
7. String picturePath = cursor.getString(columnIndex);
8. cursor.close();
9. mImgPath = picturePath;      

cursor的结果为null,其他手机没有问题,网上查找原因,得到如下结论:

对于Android 4.4版本及以后,uri的形式发生了变化,此时如果要获取图像的路径,可以按照如下实现:

1. Uri selectedImage = data.getData();
2. String[] filePathColumn = { MediaStore.Images.Media.DATA };
3. 
4. Cursor cursor = getContentResolver().query(selectedImage,
5. null, null, null);
6. if(cursor!=null)
7. {
8. cursor.moveToFirst();
9. int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
10. String picturePath = cursor.getString(columnIndex);
11. cursor.close();
12. mImgPath = picturePath;
13. }
14. else
15. {
16. mImgPath = selectedImage.getPath();
17. }