Flutter 申請權限問
- 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
...
}
...
}
參考以下注釋鏈接
Android6.0運行時權限簡介 ??
記一次Androidx作業適配 ??
Android權限操作之uses-permission詳解 ??
flutter ios permission_handle權限動態申請 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/248624.html
標籤:其他
下一篇:android 自定義數字鍵盤
