在选择相册时,使用Intent.ACTION_GET_CONTENT方式,然后在onActivityResult中通过getData()得到uri,再通过ContentResolver去获取Cursor对象,大部分机型都没有问题。但是在用小米note测试出现了选择了照片返回,能获取uri,但是在获取Cursor对象的时候得到的Cursor对象是null的问题。代码是这样的:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent, requestCode);
onActivityResult中是这样的:
if (resultCode == RESULT_OK) { Uri uri = data.getData(); ContentResolver cr = this.getContentResolver(); Cursor c = cr.query(uri, null, null, null, null); if (c != null) { ... ... } }
在Cursor c = cr.query(uri, null, null, null, null);这里的时候得到的Cursor对象为空。(具体什么问题,目前还没搞清楚)
虽然没搞清楚原因,但是问题还是得解决。。。于是,换了一种Intent方式Intent.ACTION_PICK,问题解决。
代码如下:
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, requestCode);
虽然问题解决了,但是不知道是什么原因,所以特此记录,等以后搞清楚了再更新。
后面测试了一下,好像是写了 intent.setType("image/*"); 这句代码就会出现这个问题。
来源:oschina
链接:https://my.oschina.net/u/2502527/blog/675627