| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- let isIos = false;
- // #ifdef APP-PLUS
- isIos = (plus.os.name === 'iOS')
- // #endif
- // 判断安卓主方法
- function requestAndroidPermission(permissionID, ifRequest) {
- return new Promise((resolve, reject) => {
- plus.android.requestPermissions([permissionID], onSuccess, onError)
- function onSuccess(res) {
- const grantedList = res.granted
- const deniedList = res.deniedPresent
- const deniedAlwaysList = res.deniedAlways
- if (grantedList.includes(permissionID)) {
- resolve(true)
- } else {
- resolve(false)
- ifRequest && gotoAppPermissionSetting()
- }
- }
- function onError(err) {
- reject(err)
- }
- })
- }
- // 分别判断Ios
- function judgeIosPermissionPush(ifRequest) {
- return new Promise(resolve => {
- var UIApplication = plus.ios.import("UIApplication");
- var app = UIApplication.sharedApplication();
- var enabledTypes = 0;
- if (app.currentUserNotificationSettings) {
- var settings = app.currentUserNotificationSettings();
- enabledTypes = settings.plusGetAttribute("types");
- if (enabledTypes == 0) {
- ifRequest && gotoAppPermissionSetting()
- resolve(false)
- } else {
- resolve(true)
- }
- plus.ios.deleteObject(settings);
- } else {
- enabledTypes = app.enabledRemoteNotificationTypes();
- if (enabledTypes == 0) {
- ifRequest && gotoAppPermissionSetting()
- resolve(false)
- } else {
- resolve(true)
- }
- }
- plus.ios.deleteObject(app);
- plus.ios.deleteObject(UIApplication);
- })
- }
- // 判断定位权限是否开启
- function judgeIosPermissionLocation(ifRequest) {
- return new Promise(resolve => {
- var cllocationManger = plus.ios.import("CLLocationManager");
- var status = cllocationManger.authorizationStatus();
- if (status == 2) {
- ifRequest && gotoAppPermissionSetting()
- resolve(false)
- } else {
- resolve(true)
- }
- plus.ios.deleteObject(cllocationManger);
- })
- }
- // 判断麦克风权限是否开启
- function judgeIosPermissionRecord(ifRequest) {
- return new Promise(resolve => {
- var avaudiosession = plus.ios.import("AVAudioSession");
- var avaudio = avaudiosession.sharedInstance();
- var permissionStatus = avaudio.recordPermission();
- if (permissionStatus == 1684369017 || permissionStatus == 1970168948) {
- ifRequest && gotoAppPermissionSetting()
- resolve(false)
- } else {
- resolve(true)
- }
- plus.ios.deleteObject(avaudiosession);
- })
- }
- // 判断相机权限是否开启
- function judgeIosPermissionCamera(ifRequest) {
- return new Promise(resolve => {
- var AVCaptureDevice = plus.ios.import("AVCaptureDevice");
- var authStatus = AVCaptureDevice.authorizationStatusForMediaType('video');
- if (authStatus == 3) {
- resolve(true)
- } else {
- ifRequest && gotoAppPermissionSetting()
- resolve(false)
- }
- plus.ios.deleteObject(AVCaptureDevice);
- })
- }
- // 判断相册权限是否开启
- function judgeIosPermissionPhotoLibrary(ifRequest) {
- return new Promise(resolve => {
- var PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");
- var authStatus = PHPhotoLibrary.authorizationStatus();
- if (authStatus == 3) {
- resolve(true)
- } else {
- ifRequest && gotoAppPermissionSetting()
- resolve(false)
- }
- plus.ios.deleteObject(PHPhotoLibrary);
- })
- }
- // 判断通讯录权限是否开启
- function judgeIosPermissionContact(ifRequest) {
- return new Promise(resolve => {
- var CNContactStore = plus.ios.import("CNContactStore");
- var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);
- if (cnAuthStatus == 3) {
- resolve(true)
- } else {
- ifRequest && gotoAppPermissionSetting()
- resolve(false)
- }
- plus.ios.deleteObject(CNContactStore);
- })
- }
- // 判断所有权限
- function getPermisson(permisson, ifRequest = false) {
- switch (permisson) {
- case "location":
- if (isIos) {
- return judgeIosPermissionLocation(ifRequest)
- } else {
- return requestAndroidPermission("android.permission.ACCESS_FINE_LOCATION", ifRequest)
- }
- break;
- case "camera":
- if (isIos) {
- return judgeIosPermissionCamera(ifRequest)
- } else {
- return requestAndroidPermission("android.permission.CAMERA", ifRequest)
- }
- break;
- case "photo":
- if (isIos) {
- return judgeIosPermissionPhotoLibrary(ifRequest)
- } else {
- return requestAndroidPermission("android.permission.READ_EXTERNAL_STORAGE", ifRequest)
- }
- break;
- case "record":
- if (isIos) {
- return judgeIosPermissionRecord(ifRequest)
- } else {
- return requestAndroidPermission("android.permission.RECORD_AUDIO", ifRequest)
- }
- break;
- case "contact":
- if (isIos) {
- return judgeIosPermissionContact(ifRequest)
- } else {
- return requestAndroidPermission("android.permission.READ_CONTACTS", ifRequest)
- }
- break;
- case "call":
- if (isIos) {
- return Promise.resolve(true)
- } else {
- return requestAndroidPermission("android.permission.CALL_PHONE", ifRequest)
- }
- break;
- case "push":
- if (isIos) {
- return judgeIosPermissionPush(ifRequest)
- } else {
- return Promise.resolve(true)
- }
- break;
- default:
- break;
- }
- }
- // 去设置
- function gotoAppPermissionSetting() {
- if (isIos) {
- var UIApplication = plus.ios.import("UIApplication");
- var application2 = UIApplication.sharedApplication();
- var NSURL2 = plus.ios.import("NSURL");
- // var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");
- var setting2 = NSURL2.URLWithString("app-settings:");
- application2.openURL(setting2);
- plus.ios.deleteObject(setting2);
- plus.ios.deleteObject(NSURL2);
- plus.ios.deleteObject(application2);
- } else {
- var Intent = plus.android.importClass("android.content.Intent");
- var Settings = plus.android.importClass("android.provider.Settings");
- var Uri = plus.android.importClass("android.net.Uri");
- var mainActivity = plus.android.runtimeMainActivity();
- var intent = new Intent();
- intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
- var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
- intent.setData(uri);
- mainActivity.startActivity(intent);
- }
- }
- // 检查是否开启了定位
- function checkSystemEnableLocation() {
- if (isIos) {
- var result = false;
- var cllocationManger = plus.ios.import("CLLocationManager");
- var result = cllocationManger.locationServicesEnabled();
- plus.ios.deleteObject(cllocationManger);
- return result;
- } else {
- var context = plus.android.importClass("android.content.Context");
- var locationManager = plus.android.importClass("android.location.LocationManager");
- var main = plus.android.runtimeMainActivity();
- var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
- var result = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER);
- return result
- }
- }
- export default {
- getPermisson,
- checkSystemEnableLocation
- }
|