我正在尝试从 DCIM 加载我的活动中的图片。我使用以下代码:
int BROWSE_PICTURES = 0;
public void openBrowsePictures() {
Intent i = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, BROWSE_PICTURES);
}
在 onActivityResult :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == BROWSE_PICTURES && resultCode == RESULT_OK && null != data) { // we have bitmap from filesystem!
Uri selectedImage = data.getData();
Log.d("CAMERA","____"+selectedImage.toString());
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(
selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
Log.d("CAMERA", " column : " + columnIndex);
String filePath = cursor.getString(columnIndex);
cursor.close();
Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);
Log.d("CAMERA", "----" + filePath);
}
}
当我尝试从文件系统加载拍摄的图片时,情况变得很奇怪。当 a 时,它按预期工作。我从 EasyScreenshot 文件中选择了一张图片,但是当 b. 我从 DCIM/Camera 路径中选择图片它不起作用。如果我在 a 处运行 Log.d 代码。案例打印:
相机: ____content://media/external/images/media/27487
和第二个 Log.d :
CAMERA:----/storage/emulated/0/Pictures/Screenshots/Screenshot_2014-12-18-15-14-22.png
但是,如果 b 它打印以下内容:
第一个 log.d :
相机:____content://com.google.android.apps.photos.content/0/https%3A%2F%2Flh5.googleusercontent.com%2F7tUacBA_4oYS2Q8CmkINWHa93B_n7heNyt3OyVZgkY8%3Ds0-d
和第二个 log.d :
相机:----null
我在运行 Android 5.0.1 的 nexus 4 设备中测试应用程序
先感谢您