Flutter 使用插件permission_handler的一些问题
Flutter 申请权限问
Flutter 申请权限问题
通常flutter 申请权限会使用插件,关于flutter使用插件 permission_handler的一些问题
最常见的已知错误是对权限调用.request()方法后,permission_handler没有返回。
根据该插件官方描述
从3.1.0版开始,该permission_handler插件已切换到Android支持库的AndroidX版本。这意味着您需要确保您的Android项目也已升级以支持AndroidX。
- 将以下内容添加到“android/gradle.properties”文件中
android.useAndroidX=true // 是否适配AndroidX
android.enableJetifier=true // 是否依赖库
- 确保compileSdkVersion将“ android / app / build.gradle”文件中的设置为281
android {
compileSdkVersion 28
…
}
- 确保将所有android.依赖项替换为其对应的AndroidX
到这一步 插件官方提供的链接打不开,到此各自查找吧(此处我不关心,没弄过这一步,替换过的xml里面权限列表的形式应该是像官网中的一样是替换导入很多包)2
在Flutter 的
android>app>src>main>AndroidManifest.mxl文件中3
<manifest>
<uses-permission android:name="android.permission.CAMERA"/> <!--//相机-->
<uses-permission android:name="android.permission.RECORD_AUDIO"/> <!--//麦克风-->
</manifest>
ios>app>Runner>Info.plist4
<dict>
<key>NSCameraUsageDescription</key>
<string>此处自定义填写想要申请权限的话,会在询问申请弹窗中显示</string>
</dict>
以上三步中第二步设置的是打包应用时的兼容版本28
用于适配到Android 8.0 (API 等级 26) 开发,这个自行调整
在build.gradle
文件里将targetSDKVersion
设为28以后,也就意味着动态申请权限时会因手机版本的不同,经用户允许授权后才可以安全的调用的api
在AndroidManifest.xml
里面设置需要申请的api权限列表
compileSdkVersion 告诉 Gradle用哪个 Android SDK 版本编译你的应用。一般要>=targetSdkVersion
buildToolsVersion是 android构建工具的版本,一般buildToolsVersion>=CompileSdkVersion,高版本的build-tools 可以构建低版本编译的android程序
targetSdkVersion 手机app能够适配的系统版本
所以要把app适配的某个系统最好把 compileSdkVersion 和 targetSdkVersion 设置一样
android {
compileSdkVersion 28
buildToolsVersion "28.0.0"
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 28
...
}
...
}
参考以下注释链接
本文地址:https://blog.csdn.net/WeiLenNuanYang/article/details/112560802
推荐阅读