Android 10引入了一项新的存储权限策略,即Scoped Storage(作用域存储),以提高应用数据的安全性和隐私保护。在Android 10中,如果应用需要访问外部存储(例如SD卡)上的文件,应该使用Scoped Storage来进行文件操作。
在Android 10中,如果应用没有声明android:requestLegacyExternalStorage
权限,即不使用传统的外部存储权限模式,那么应用将无法直接访问外部存储上的文件。但是,仍然有一些方法可以通过Scoped Storage来解压缩文件。
一种方法是使用ACTION_OPEN_DOCUMENT_TREE
意图来请求用户授予应用对外部存储的访问权限。通过此意图,应用可以让用户选择一个目录,然后应用将能够访问该目录及其子目录中的文件。然后,应用可以使用标准的Java文件操作API来解压缩文件。
另一种方法是使用ContentResolver
和DocumentFile
类来进行文件操作。首先,应用可以使用ContentResolver
的openOutputStream()
方法创建一个输出流,然后使用标准的Java文件操作API将解压缩的文件写入该输出流。类似地,应用可以使用ContentResolver
的openInputStream()
方法创建一个输入流,然后使用标准的Java文件操作API从输入流中读取文件。
需要注意的是,以上方法都需要在AndroidManifest.xml文件中声明适当的权限,例如<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
和<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云