import { showAlert } from '@/utils/message.js' // 递归算法 export const initTree = (arr, parentId = '0', id) => { const tree = []; arr.filter(item => item.parentId === parentId).forEach(item => { const children = initTree(arr, item[id]); if (children.length > 0) { item.children = children; } tree.push(item); }); return tree; } // 安卓异步调用 export const requestAndroidPermissionAsync = (systemInfo, permissions) => { return new Promise((resolve, reject) => { // if (uni.getSystemInfoSync().platform !== 'android') { // resolve({ granted: true, nonSystem: true }) // return // } plus.android.requestPermissions(permissions, (result) => { showAlert("result=>" + JSON.stringify(result)) // const granted = Object.values(result.granted).every(Boolean); let granted = false; if (systemInfo.osVersion < 13) { granted = result.granted.length == 2 } else if (systemInfo.osVersion == 13) { granted = result.granted.length == 3 } else { granted = result.granted.length == 1 } resolve({ ...result, granted }) }, (error) => { reject(error) }) }) } // 安卓同步调用 export const requestAndroidPermission = (systemInfo) => { let granted = false; const Manifest = plus.android.importClass("android.Manifest"); const MainActivity = plus.android.runtimeMainActivity(); if (systemInfo.osVersion < 13) { // 安卓系统版本 let permissionStatus = MainActivity.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE); let perStatus = 0; if (permissionStatus === 0) { perStatus++; } permissionStatus = MainActivity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permissionStatus === 0) { perStatus++; } if (perStatus == 2) { granted = true } else { granted = false //"当前文件保存权限被关闭,请到设置中开启才能继续后续操作" goPermission();//调用授权方法去授权 } } else if (systemInfo.osVersion == 13) { let permissionStatus = MainActivity.checkSelfPermission(Manifest.permission.READ_MEDIA_IMAGES); let perStatus = 0; if (permissionStatus === 0) { perStatus++; } permissionStatus = MainActivity.checkSelfPermission(Manifest.permission.READ_MEDIA_VIDEO); if (permissionStatus === 0) { perStatus++; } permissionStatus = MainActivity.checkSelfPermission(Manifest.permission.READ_MEDIA_AUDIO); if (permissionStatus === 0) { perStatus++; } if (perStatus == 3) { granted = true } else { granted = false //"当前文件保存权限被关闭,请到设置中开启才能继续后续操作" goPermission();//调用授权方法去授权 } } else { let permissionStatus = MainActivity.checkSelfPermission(Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED); let perStatus = 0; if (permissionStatus === 0) { perStatus++; } if (perStatus == 1) { granted = true } else { granted = false //"当前文件保存权限被关闭,请到设置中开启才能继续后续操作" goPermission();//调用授权方法去授权 } } return granted } // 弹窗跳授权页面 const goPermission = () => { uni.showModal({ title: '提示', content: "请进行设备授权", cancelText: '去授权', confirmText: '已授权', success: function (res) { if (res.confirm) { uni.reLaunch({ url: '/pages/loading/loading', }); } else if (res.cancel) { jumpAuthPermission(); } } }) } // 跳转授权按钮 const jumpAuthPermission = () => { var main = plus.android.runtimeMainActivity(); var Intent = plus.android.importClass('android.content.Intent'); var Uri = plus.android.importClass('android.net.Uri'); var pkg = main.getPackageName(); var intent = new Intent('android.settings.APPLICATION_DETAILS_SETTINGS'); intent.setData(Uri.parse('package:' + pkg)); main.startActivity(intent); setTimeout(() => { uni.reLaunch({ url: '/pages/loading/loading', }); }, 1000) }