返回

Android SAF:从API级别30开始的新存储访问方式

Android

Android SAF 简介

Android存储访问框架(SAF)是一个应用程序编程接口(API),允许应用程序以安全、受控的方式访问设备存储。它取代了传统的存储权限模型,该模型允许应用程序不受限制地访问设备上的所有文件。

SAF 的主要目标是提高用户隐私和安全性。通过限制应用程序对存储的访问,可以降低恶意应用程序窃取或破坏用户数据的风险。

SAF 如何工作?

SAF 使用一种称为文档提供程序的机制来访问设备存储。文档提供程序是一种特殊类型的应用程序组件,它允许其他应用程序访问特定类型的数据。

当应用程序使用 SAF 请求访问设备存储时,系统会显示一个文档提供程序选择器。用户可以选择一个文档提供程序来授予应用程序访问特定目录或文件类型的权限。

使用 SAF 访问文件

要使用 SAF 访问文件,应用程序需要执行以下步骤:

  1. 创建 DocumentFile 实例: 应用程序首先需要创建一个 DocumentFile 实例来表示要访问的文件或目录。这可以通过以下方式完成:
DocumentFile file = DocumentFile.fromTreeUri(context, uri);
  1. 请求访问权限: 如果应用程序还没有访问文件的权限,则需要使用 requestDocumentAccess() 方法请求访问权限。这会显示一个文档提供程序选择器,允许用户授予访问权限。
Uri uri = file.getUri();
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri);
startActivityForResult(intent, REQUEST_CODE);
  1. 获取内容 URI: 一旦用户授予访问权限,应用程序就可以使用 getUri() 方法获取文件的 URI。此 URI 可用于读取或写入文件的内容。
Uri fileUri = file.getUri();

结论

Android存储访问框架(SAF)是一种新的API,可用于以安全、受控的方式访问设备存储。通过限制应用程序对存储的访问,可以降低恶意应用程序窃取或破坏用户数据的风险。

使用 SAF 来访问文件相对简单。应用程序只需创建 DocumentFile 实例、请求访问权限,然后获取文件的 URI。使用此 URI,应用程序可以读取或写入文件的内容。