将一行插入 ContentResolver 的正确方法是什么
What's the proper way to insert a row into ContentResolver
这是我在 ContentResolver 中插入新行的逻辑(它是 Xamarin,但不认为它是相关的,除了某些语法对于非 C# 人员来说可能看起来很奇怪)
var contentResolver = ContentResolver;
var cv = new ContentValues();
String timeStamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
cv.Put(MediaStore.Images.Media.InterfaceConsts.Title, timeStamp);
var uri = contentResolver.Insert(MediaStore.Images.Media.ExternalContentUri, cv);
我期待 uri 反映我设置的 title
但它 returns 像这样的 uri
content://media/external/images/media/1546
我设置的标题在任何地方都不存在。我从 Insert
获得的 uri 是什么?让它尊重我为图像设置的名称的正确方法是什么?
编辑
如果我得到 MediaStore.Images.ImageColumns.Data
,结果是 storage/emulated/0/Pictures/1483385168489.jpg
如果我得到 MediaStore.Images.ImageColumns.Title
,结果是 20170102_165627
我希望用这个名称创建一个文件 storage/emulated/0/Pictures/20170102_165627.jpg
what's the proper way to make it honor the name I've set for the
image?
Query
ContentProvider
将 URI
用于 MediaColumns.TITLE
:
// required column
string[] proj = new[] { MediaStore.MediaColumns.TITLE };
// query ContentProvider
ICursor cursor = contentResolver.Query(uri, proj, null, null, null);
// add null and empty check for cursor
....
// get column index
int column = cursor.GetColumnIndex(MediaStore.MediaColumns.TITLE);
// read title from cursor using column index
string media_title = cursor.GetString(column);
这是我在 ContentResolver 中插入新行的逻辑(它是 Xamarin,但不认为它是相关的,除了某些语法对于非 C# 人员来说可能看起来很奇怪)
var contentResolver = ContentResolver;
var cv = new ContentValues();
String timeStamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
cv.Put(MediaStore.Images.Media.InterfaceConsts.Title, timeStamp);
var uri = contentResolver.Insert(MediaStore.Images.Media.ExternalContentUri, cv);
我期待 uri 反映我设置的 title
但它 returns 像这样的 uri
content://media/external/images/media/1546
我设置的标题在任何地方都不存在。我从 Insert
获得的 uri 是什么?让它尊重我为图像设置的名称的正确方法是什么?
编辑
如果我得到 MediaStore.Images.ImageColumns.Data
,结果是 storage/emulated/0/Pictures/1483385168489.jpg
如果我得到 MediaStore.Images.ImageColumns.Title
,结果是 20170102_165627
我希望用这个名称创建一个文件 storage/emulated/0/Pictures/20170102_165627.jpg
what's the proper way to make it honor the name I've set for the image?
Query
ContentProvider
将 URI
用于 MediaColumns.TITLE
:
// required column
string[] proj = new[] { MediaStore.MediaColumns.TITLE };
// query ContentProvider
ICursor cursor = contentResolver.Query(uri, proj, null, null, null);
// add null and empty check for cursor
....
// get column index
int column = cursor.GetColumnIndex(MediaStore.MediaColumns.TITLE);
// read title from cursor using column index
string media_title = cursor.GetString(column);