在android开发中,有从本地文件夹中读取图片的功能,使用一下代码打开图片选择列表:
- Intent intent = new Intent();
- intent.setAction(Intent.ACTION_PICK);
- intent.setType("image/*");
- startActivityForResult(intent, RESULT_LOAD_IMAGE);
- Uri uri = data.getData();
- String path = uri.getPath();
在这段代码中,我测试发现,在我的Nexus 4、魅族、模拟器上测试没有什么问题,但是在红米,华为等手机上测试,发现得到的path这个路径值,不是我们图片在手机上的路径,暂时还不明白是个什么值,如果根据这个path去获取图片会得到一个null值,不知为什么???
解决方案:在onActivityResult中,按照如下的方式,就可以在所有的手机上使用,不会出问题,亲测:
- if (data != null) {
- Uri uri = data.getData();
- if (!TextUtils.isEmpty(uri.getAuthority())) {
- Cursor cursor = getContentResolver().query(uri,
- new String[] { MediaStore.Images.Media.DATA },null, null, null);
- if (null == cursor) {
- Toast.makeText(this, "图片没找到", Toast.LENGTH_SHORT).show();
- return;
- }
- cursor.moveToFirst();
- path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
- cursor.close();
- } else {
- path = uri.getPath();
- }
- }else{
- Toast.makeText(this, "图片没找到", Toast.LENGTH_SHORT).show();
- return;
- }
这个path就是我们要的图片路径,我们就可以拿它做我们想做的事!!!
炒别人的,怕人家删除留下来