提供一段Android11上读取U盘路径的代码
时间: 2023-07-10 22:33:11 浏览: 72
在Android 11及以上版本中,由于系统隐私和权限的限制,直接读取U盘路径的方式已经被禁止,需要通过Storage Access Framework(存储访问框架)来进行访问。以下是一个简单的示例代码,可以在Android 11上读取U盘文件路径:
```java
private static final int REQUEST_CODE_OPEN_DOCUMENT_TREE = 1;
// 请求用户授予访问外部存储的权限
private void requestExternalStoragePermission() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE_OPEN_DOCUMENT_TREE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
super.onActivityResult(requestCode, resultCode, resultData);
if (requestCode == REQUEST_CODE_OPEN_DOCUMENT_TREE && resultCode == Activity.RESULT_OK) {
Uri treeUri = resultData.getData();
DocumentFile pickedDir = DocumentFile.fromTreeUri(getActivity(), treeUri);
String path = pickedDir.getUri().getPath();
Log.d(TAG, "U盘路径:" + path);
}
}
```
以上代码中,我们使用了`Intent.ACTION_OPEN_DOCUMENT_TREE`来请求用户授予访问外部存储的权限。当用户选择U盘时,我们通过`DocumentFile`来获取U盘路径,并将其打印到日志中。请注意,`DocumentFile`中的路径与传统Java路径不同,需要使用`getUri().getPath()`来获取真实路径。
需要注意的是,以上代码需要在Activity中使用,并且需要在AndroidManifest.xml文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
同时,你还需要在AndroidManifest.xml文件中添加以下代码,以便用户在应用程序第一次运行时授予外部存储权限:
```xml
<application
...
android:requestLegacyExternalStorage="true"
... >
...
</application>
```
希望这可以帮助到你!
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](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)