安卓11 非root 读取文件夹 代码实现
时间: 2024-05-01 12:18:19 浏览: 104
可以使用Android 11的Scoped Storage特性来读取文件夹。以下是基本代码示例:
```
// 获取文件夹的URI
Uri uri = MediaStore.Downloads.getContentUri(MediaStore.VOLUME_EXTERNAL);
String[] projection = new String[] {MediaStore.Downloads._ID, MediaStore.Downloads.DISPLAY_NAME};
String selection = MediaStore.Downloads.DISPLAY_NAME + "=?";
String[] selectionArgs = new String[] {"myFolder"};
String sortOrder = MediaStore.Downloads.DATE_MODIFIED + " DESC";
Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
// 在文件夹中找到所需文件
if (cursor.moveToFirst()) {
long id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Downloads._ID));
Uri fileUri = ContentUris.withAppendedId(MediaStore.Downloads.EXTERNAL_CONTENT_URI, id);
String fileName = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Downloads.DISPLAY_NAME));
// 通过 ContentResolver 和 InputStream 读取文件
try {
InputStream inputStream = getContentResolver().openInputStream(fileUri);
// 注意:需要关闭 InputStream
// 处理 inputStream...
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
cursor.close();
```
以上代码实现了读取名为“myFolder”的文件夹中的文件(假设该文件夹在Downloads目录下),可以依据实际需求进行修改。需要注意的是,由于Scoped Storage特性的限制,文件路径不能直接访问,需要通过MediaStore API或Storage Access Framework来访问文件。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![tar](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)