我已经使用MediaStore保存了文件
ContentValues values = new ContentValues(size);
values.put(MediaStore.Audio.Media.TITLE, name); //This can be Audio or Images or other...
... //put other values
...
Uri uri = getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values);
然后,我通过使用提供的uri打开文件描述符来创建文件。
FileDescriptor f = getContentResolver().openFileDescriptor(uri, "w").getFileDescriptor();
... //use the file descriptor to write the file
然后我将uri保存在数据库中,以供将来访问创建的文件。
到目前为止,一切都很好。
问题是,当我重命名创建的文件时,即使我将恢复原始文件名,uri也不会再指向该文件。
有一种方法可以获取另一个指向新文件的uri(还原其原始名称后)?
编辑:
我可以执行对MediaStore的查询以找到文件,但是重命名后,MediaStore似乎不再包含该文件...为什么?
如果我尝试显示保存在MediaStore中的所有文件,则找不到新文件。
private void stampMediaStoreRecords() {
Cursor c = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[] {MediaStore.Audio.Media.DISPLAY_NAME}, MediaStore.Audio.Media.DISPLAY_NAME + "='FileXXXXX.mp3'", null, null, null); //FileXXXXX.mp3 is an example of an existing file
if (c != null && c.moveToFirst()) {
do {
Log.d("MediaStoreFile", c.getString(c.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)));
} while (c.moveToNext());
c.close();
}
}
请注意,新文件只有10KB,也许这可能是问题所在?