Android11及更高版本:通过作用域存储创建zip文件
创始人
2024-08-20 10:30:21
0

在Android 11及更高版本中,由于安全和隐私原因,应用程序不再具有对外部存储的常规访问权限。因此,如果要创建zip文件,则需要使用Scoped Storage。以下是实现这一目标的步骤:

  1. 在清单文件中启用“MANAGE_EXTERNAL_STORAGE”权限。

  1. 获取文件访问权限。
if (Environment.isExternalStorageManager()) {
    // Create zip file via Scoped Storage
} else {
    Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
    Uri uri = Uri.fromParts("package", getPackageName(), null);
    intent.setData(uri);
    startActivity(intent);
}
  1. 创建zip文件。
OutputStream os = getContentResolver().openOutputStream(zipUri);
ZipOutputStream zipOutputStream = new ZipOutputStream(os);
ZipEntry zipEntry = new ZipEntry(fileName);
zipOutputStream.putNextEntry(zipEntry);
FileInputStream inputStream = new FileInputStream(file);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
    zipOutputStream.write(buffer, 0, bytesRead);
}
zipOutputStream.closeEntry();
zipOutputStream.finish();
zipOutputStream.close();

在上述代码中,zipUri是zip文件的Uri,fileName是zip文件的名称,file是要被添加到zip文件中的文件。

通过以上步骤,我们可以在Android 11及更高版本中使用Scoped Storage创建zip文件。

相关内容

热门资讯

安装Pillow时遇到了问题:... 遇到这个问题,可能是因为缺少libwebpmux3软件包。解决方法是手动安装libwebpmux3软...
安装React Native时... 当安装React Native时出现构建错误的情况,可以尝试以下解决方法:确保已经安装了最新版本的C...
安装Rails时构建webso... 在安装Rails时,如果构建websocket-driver时发生错误,可以尝试以下解决方法:更新系...
安装react-native-... 要安装react-native-onesignal并在应用关闭时仍能接收通知,可以按照以下步骤进行:...
安装Python库"... 安装Python库"firedrake"的解决方法如下:打开终端或命令提示符(Windows系统)。...
Apache Nifi在Kub... Apache Nifi可以在Kubernetes上运行,并且已经准备好用于生产环境。下面是一个使用H...
安装React Native时... 安装React Native时可能会出现各种错误,下面是一些常见错误和解决方法的代码示例:Error...
按转换模式过滤日志【%t】。 要按照转换模式过滤日志,可以使用正则表达式来实现。下面是一个示例代码,使用Java语言的Patter...
安装React-Scripts... 这是因为React-Scripts使用Facebook工具包中的一些脚本。 joinAdIntere...
安装QuickUMLS时遇到问... 安装QuickUMLS时遇到问题的解决方法可能因具体问题而异。以下是一些常见问题的解决方法,包含代码...