我正在尝试保存图像,并向图库提醒有关新图像的信息。图像不会立即显示在库中,但可能需要几个小时才能刷新。我使用以下代码:
String title = "title";
String r = MediaStore.Images.Media.insertImage(getContentResolver(), State.pictureWithDekor, title, title);
Uri uri = Uri.parse(r);
MediaScannerConnection.scanFile(this,
new String[] { uri.getPath() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("TAG", "Finished scanning " + path);
}
});
r
insertImage
之后的content://media/external/images/media/2082
的值,onScanCompleted中的uri
为null
。
我做错了什么?
答案 0 :(得分:0)
问题是从MediaStore.Images.Media.insertImage
返回的路径不是一条神奇的路径。要获得真正的路径,请使用:
public String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} finally {
if (cursor != null) {
cursor.close();
}
}
}