MediaStore和重命名的文件

时间:2019-12-22 14:48:11

标签: android file uri mediastore scoped-storage

我已经使用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,也许这可能是问题所在?

0 个答案:

没有答案