实现在 Android 13 上使用 SAF API
简介
在 Android 13 及更高版本中,谷歌引入了 SAF(Storage Access Framework)API,该 API 提供了一种安全的方式让应用程序访问用户的存储设备。本文将指导刚入行的开发者如何实现在 Android 13 上使用 SAF API。
流程概述
为了实现在 Android 13 上使用 SAF API,我们需要按照以下步骤进行操作:
步骤 | 操作 |
---|---|
1 | 请求访问存储权限 |
2 | 打开 SAF 文件选择器 |
3 | 处理返回的文件 URI |
步骤详解
步骤 1:请求访问存储权限
在 AndroidManifest.xml 文件中,确保已添加以下权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在你的 Activity 或 Fragment 中,使用以下代码请求存储权限:
private static final int REQUEST_CODE_STORAGE_PERMISSION = 1;
private void requestStoragePermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_CODE_STORAGE_PERMISSION);
}
}
步骤 2:打开 SAF 文件选择器
在你的 Activity 或 Fragment 中,使用以下代码打开 SAF 文件选择器:
private static final int REQUEST_CODE_FILE_PICKER = 2;
private void openFilePicker() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(intent, REQUEST_CODE_FILE_PICKER);
}
步骤 3:处理返回的文件 URI
在你的 Activity 或 Fragment 中,重写 onActivityResult
方法来处理返回的文件 URI:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_FILE_PICKER && resultCode == RESULT_OK && data != null) {
Uri fileUri = data.getData();
// 使用返回的文件 URI 进行进一步操作
// ...
}
}
类图
以下是使用 SAF API 的类图:
classDiagram
class MainActivity {
+ void requestStoragePermission()
+ void openFilePicker()
+ void onActivityResult(int, int, Intent)
}
总结
通过本文,你已经了解如何在 Android 13 上使用 SAF API。首先,我们请求访问存储权限以获取用户授权。然后,我们打开 SAF 文件选择器,让用户选择所需的文件。最后,我们处理返回的文件 URI,以继续进行后续操作。希望本文对你有所帮助,祝你在 Android 开发中取得成功!