返回
使用全新 FileProvider 轻松实现 Android 9.0 自动更新
Android
2023-12-20 19:10:04
引言
Android 9.0(代号为“Pie”)带来了许多令人兴奋的新功能,其中之一是针对文件访问所做的重大改进。过去,Android 应用程序只能访问存储在应用程序私有目录中的文件。在 Android 9.0 中,FileProvider 的新实现允许应用程序安全地访问存储在外部存储中的文件。这对于需要自动更新应用程序的应用程序(例如应用程序商店或游戏平台)至关重要。
FileProvider 的新实现
在 Android 9.0 中,FileProvider 的新实现使用基于权限的系统,允许应用程序授予对特定文件或目录的临时访问权限。这意味着应用程序无需再请求 READ_EXTERNAL_STORAGE 权限的危险权限。
使用 FileProvider 启用自动更新
要使用 FileProvider 启用自动更新,应用程序必须执行以下步骤:
- 在 AndroidManifest.xml 中添加权限和 FileProvider:
<manifest ... >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</manifest>
- 新建文件(路径:res\xml\file_paths.xml):
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="." />
</paths>
- 在 (app 的) build.gradle 中添加内容:
android {
...
applicationVariants.all { variant ->
variant.outputs.all { output ->
output.outputFileName = "${variant.buildType.name}-${variant.productFlavors[0].name}-${variant.versionName}.apk"
}
}
}
结论
通过使用 FileProvider 的新实现,应用程序可以安全地访问存储在外部存储中的文件,从而轻松实现自动更新。这种新方法不需要危险的 READ_EXTERNAL_STORAGE 权限,并且可以提高应用程序的安全性。