你从这段代码中得到什么
ContentValues values = new ContentValues();
values.put(MediaStore.Video.Media.TITLE, "Title1");
values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4");
values.put(MediaStore.Video.Media.DATA, videoPath);
Uri uri = cr.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
是一个公共Uri。更多关于是可以找到here,在那里你可以看到,从API 19(KitKat),媒体的访问已经改变。
MediaStore.MediaColumns.DATA
描述为:
07004
所以你必须从公共Uri得到真正的Uri。
为了运行代码:
getDataColumn(context, uri, null, null);
其中uri是您的公共Uri,函数getDataColumn如下所示:
public static String getDataColumn(Context context, Uri uri, String selection,
String[] selectionArgs) {
Cursor cursor = null;
final String column = MediaStore.MediaColumns.DATA;
final String[] projection = {
column
};
try {
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
null);
if (cursor != null && cursor.moveToFirst()) {
final int column_index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(column_index);
}
} finally {
if (cursor != null)
cursor.close();
}
return null;
}