测试手机 红米 not3
Uri imageFilePath = data.getData();String[] proj = {MediaStore.Images.Media.DATA};Cursor cursor = getContentResolver().query(imageFilePath, proj, null, null, null);int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);cursor.moveToFirst();// 获取图片真实地址path = cursor.getString(column_index);System.out.println(path);
cursor的结果为null,其他手机没有问题,查找原因,得到如下结论:
对于Android 4.4版本及以后,uri的形式发生了变化,此时如果要获取图像的路径,可以按照如下实现:
Uri selectedImage = data.getData();String[] filePathColumn = { MediaStore.Images.Media.DATA };Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);if(cursor!=null){cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); cursor.close(); path = picturePath;}else{path = selectedImage.getPath();}
完美的解决了 报空指针的问题
在此记录 防止在此跌坑