緣由:
針對ionic+cordova+angular 開發APP時,當需要選擇多個圖片時,則需要ImagePicker 插件。不過,安卓版本大於6.0的時候,改插件是需要授權的:相冊權限和存儲權限。若沒有權限,則會閃退。
一、ionic3
(一)安裝插件
npm安裝插件,命令語句
cordova plugin add com.synconset.imagepicker@2.1.8 cordova plugin add cordova-plugin-camera@3.0
查看所有cordova 插件的命令語句:
cordova plugin list
(二)配置項目
1、打開工程目入android文件下的build.gradle 如:
2、搜索def promptForReleaseKeyPassword(),在下方添加代碼如:【紅色部分】
def promptForReleaseKeyPassword() { if (!cdvReleaseSigningPropertiesFile) { return; } if ('__unset'.equals(android.signingConfigs.release.storePassword)) { android.signingConfigs.release.storePassword = privateHelpers.promptForPassword('Enter key store password: ') } if ('__unset'.equals(android.signingConfigs.release.keyPassword)) { android.signingConfigs.release.keyPassword = privateHelpers.promptForPassword('Enter key password: '); } } configurations.all { resolutionStrategy { force "com.android.support:support-v4:24.1.1" } }
三、權限的檢測和請求
在App啟動時,檢測是否有存儲和相冊權限,例如app.component.ts 文件中:
this.platform.ready().then(() => { // 權限 if (this.settingSevice.isAndroid()) { this.checkPermissions(); } }); /*檢查App是否有打開圖庫的權限*/ checkPermissions() { // @ts-ignore const permissions = cordova.plugins.permissions, permissionList = [permissions.CAMERA, permissions.WRITE_EXTERNAL_STORAGE]; function errorCallback() { console.warn("permissions is not turned on"); } function checkPermissionCallback(status) { if(!status.hasPermission) { permissions.requestPermissions( permissionList, status => { if(!status.hasPermission) errorCallback(); }, errorCallback); } } permissions.hasPermission(permissionList, checkPermissionCallback, null); }
二、ionic4 【大部分和ionic3類同】
(一)安裝插件【不需要具體版本】
ionic cordova plugin add cordova-plugin-telerik-imagepicker
npm install @ionic-native/image-picker
(二)配置方式一樣,但是路徑不同【android --App--buid.gradle】下進行配置
(三)權限 ---同ionci3(三)