在ContentResolver

时间:2017-01-02 19:00:20

标签: android android-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,但它返回的是这样的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

的文件

1 个答案:

答案 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);