征求采用新 Android 存储隐私政策的建议

Ask for advice of adopting to new Android storage privacy policy

我的应用程序有一个 backup/restore 功能,可以将数据导出到文件到设备中的文件,或共享到 DropBox、电子邮件等。恢复时用户可以 select 该文件导入数据背部。但是在新的Android存储隐私政策之后:

https://developer.android.com/about/versions/11/privacy/storage

如果恢复的应用程序是在卸载并重新安装之后,或者在必须是不同安装的新设备中,我的应用程序将无法再看到导出的文件。似乎所有应用程序都可以看到文件已生成。这破坏了 backup/restore 功能的目的。

任何人都可以建议我的应用程序应该如何更改以帮助用户在不同的安装中保留数据?感谢您的任何建议或建议。

新政策是关于reading/writing设备中的每个文件,您仍然可以向系统请求外部文件,这些文件将作为您刚刚打开和阅读的 Uri 传送给您

    val intentGetPDF = Intent(Intent.ACTION_GET_CONTENT)
    intentPDF.type = fileType
    intentPDF.addCategory(Intent.CATEGORY_OPENABLE)
    ctx.startActivityForResult(Intent.createChooser(intentFetPDF, ""), REQUEST_PDF)

并且来自onActivityResult

val iS = ctx.contentResolver.openInputStream(data.data as Uri)

要保存文件,您现在需要通过来自 FileProvider 的 Uri 从您的内部应用程序存储共享它

    val fileUri = FileProvider.getUriForFile(ctx, "apppackage.provider", "your internal file path here")
    val intent = Intent(MediaStore.ACTION_SEND)
    intent.putExtra(Intent.EXTRA_STREAM, fileUri)
    startActivity(intent)

您需要在 AndroidManifest 中设置一个 FileProvider 才能正常工作