MediaStore.Files.FileColumns.DATA已过时
时间: 2023-10-31 19:16:56 浏览: 133
该 接口已经 过期 已经过期
是的,`MediaStore.Files.FileColumns.DATA` 已经过时了。从 Android 10 开始,Android 应用程序无法直接访问设备上的外部存储器路径,而是需要使用 `MediaStore` API 或 `Storage Access Framework`(SAF)来访问文件。
以下是使用 `MediaStore` API 获取文件 URI 的示例代码:
```java
String filePath = "/storage/emulated/0/Download/sample.mp3";
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String selection = MediaStore.Audio.Media.DISPLAY_NAME + "=?";
String[] selectionArgs = new String[]{new File(filePath).getName()};
String sortOrder = null;
Cursor cursor = getContentResolver().query(uri, null, selection, selectionArgs, sortOrder);
if (cursor != null && cursor.moveToFirst()) {
int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
uri = ContentUris.withAppendedId(uri, id);
cursor.close();
}
// 处理 URI
```
在这个示例中,我们首先定义了文件路径 `filePath`。然后,我们调用 `MediaStore.Audio.Media.EXTERNAL_CONTENT_URI` 获取存储在设备上的所有音频文件的 URI。接下来,我们使用查询来获取具有指定文件名的文件的 ID,然后将其附加到音频文件的 URI 上。
请注意,此示例仅适用于获取音频文件的 URI。如果要获取其他类型的文件的 URI,请将 `MediaStore.Audio.Media.EXTERNAL_CONTENT_URI` 替换为适当的 `MediaStore` 内容 URI,并更改查询中使用的列名(例如,使用 `MediaStore.Images.Media.DISPLAY_NAME` 获取图像文件的 URI)。
阅读全文