这是我向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
,但它返回的是这样的uri
内容://媒体/外部/图像/媒体/ 1546
我设置的标题不存在于任何地方。我从Insert
得到的是什么?是什么方法让它尊重我为图像设定的名称?
修改
如果我得到MediaStore.Images.ImageColumns.Data
,则结果为storage/emulated/0/Pictures/1483385168489.jpg
如果我得到MediaStore.Images.ImageColumns.Title
,则结果为20170102_165627
我希望创建一个名为storage/emulated/0/Pictures/20170102_165627.jpg
答案 0 :(得分:1)
正确的方法是让它尊重我为之设定的名称 图像?
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);