欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

uniapp獲取當(dāng)前位置及檢測授權(quán)狀態(tài)效果

 更新時間:2024年04月27日 10:21:33   作者:Smile_ping  
這篇文章主要介紹了uniapp獲取當(dāng)前位置及檢測授權(quán)狀態(tài)效果,本文通過示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

uniapp獲取當(dāng)前位置及檢測授權(quán)定位權(quán)限

效果圖

Android設(shè)備

點擊 “設(shè)置”,跳轉(zhuǎn)應(yīng)用信息,打開“權(quán)限即可”;

創(chuàng)建js文件

permission.js

  • 新建 .js 文件,例: permission.js
  • 管理相關(guān)權(quán)限,例相冊、相機等,可以寫在此文件中
  • 根據(jù)不同平臺,處理向系統(tǒng)請求權(quán)限
/// null = 未請求,1 = 已允許,0 = 拒絕|受限, 2 = 系統(tǒng)未開啟
var isIOS
function location() {
    var result = 0;
    var cllocationManger = plus.ios.import("CLLocationManager");
    var enable = cllocationManger.locationServicesEnabled();
    var status = cllocationManger.authorizationStatus();
    if (!enable) {
        result = 2;
    } else if (status === 0) {
        result = null;
    } else if (status === 3 || status === 4) {
        result = 1;
    } else {
        result = 0;
    }
    plus.ios.deleteObject(cllocationManger);
    return result;
}
function requestIOS(permissionID) {
    return new Promise((resolve, reject) => {
        switch (permissionID) {
            case "location":
                resolve(location());
                break;
            default:
                resolve(0);
                break;
        }
    });
}
function requestAndroid(permissionID) {
    return new Promise((resolve, reject) => {
        plus.android.requestPermissions(
            [permissionID],
            function(resultObj) {
                var result = 0;
                for (var i = 0; i < resultObj.granted.length; i++) {
                    var grantedPermission = resultObj.granted[i];
                    console.log('已獲取的權(quán)限:');
                    result = 1
                }
                for (var i = 0; i < resultObj.deniedPresent.length; i++) {
                    var deniedPresentPermission = resultObj.deniedPresent[i];
                    console.log('拒絕本次申請的權(quán)限:');
                    result = 0
                }
                for (var i = 0; i < resultObj.deniedAlways.length; i++) {
                    var deniedAlwaysPermission = resultObj.deniedAlways[i];
                    console.log('永久拒絕申請的權(quán)限:');
                    result = -1
                }
                resolve(result);
            },
            function(error) {
                resolve({
                    code: error.code,
                    message: error.message
                });
            }
        );
    });
}
function gotoAppPermissionSetting() {
    if (permission.isIOS) {
        var UIApplication = plus.ios.import("UIApplication");
        var application2 = UIApplication.sharedApplication();
        var NSURL2 = plus.ios.import("NSURL");
        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);
    }
}
const permission = {
    get isIOS(){
        return typeof isIOS === 'boolean' ? isIOS : (isIOS = uni.getSystemInfoSync().platform === 'ios')
    },
    requestIOS: requestIOS,
    requestAndroid: requestAndroid,
    gotoAppSetting: gotoAppPermissionSetting
}
export default permission

location.js

  • 檢測當(dāng)前權(quán)限
  • 獲取當(dāng)前位置
  • 拒絕授權(quán),彈窗提示
  • 跳轉(zhuǎn)App應(yīng)用設(shè)置,打開位置權(quán)限
import permision from '@/common/js/permission.js'
import store from '@/store/index.js'
export async function getLocation(cb) {
	// #ifdef APP-PLUS
	let status = await checkPermission();
	if (status !== 1) {
		return status;
	}
	// #endif
	if (typeof cb == 'function') cb && typeof cb == 'function' && cb(status)
	doGetLocation();
}
/**
 * 獲取當(dāng)前位置信息
 */
export const doGetLocation = () => {
	uni.getLocation({
		success: (res) => {
            // 根據(jù)個人所需處理
			store.commit('SET_LOCATION', {
				lng: res.longitude,
				lat: res.latitude
			});
			console.log('當(dāng)前位置:', res.longitude, res.latitude);
		},
		fail: (err) => {
			if (err.errMsg.indexOf("auth deny") >= 0) {
				uni.showToast({
					title: "訪問位置被拒絕",
					icon: 'none'
				})
			} else {
				uni.showToast({
					title: err.errMsg,
					icon: 'none'
				})
			}
		}
	})
}
/**
 * 檢測定位權(quán)限
 */
async function checkPermission() {
	let status = permision.isIOS ? await permision.requestIOS('location') :
		await permision.requestAndroid('android.permission.ACCESS_FINE_LOCATION');
	if (status === null || status === 1) {
		status = 1;
	} else if (status === 2) {
		uni.showModal({
			content: "系統(tǒng)定位已關(guān)閉",
			showCancel: false,
			success: function(res) {}
		})
	} else if (status.code) {
		uni.showModal({
			content: status.message
		})
	} else {
		uni.showModal({
			content: "為了您更好的體驗App藍牙功能,需要獲取位置信息,請點擊設(shè)置開啟定位權(quán)限",
			confirmText: "設(shè)置",
			success: function(res) {
				if (res.confirm) {
					permision.gotoAppSetting();
				}
			}
		})
	}
	return status;
}
const location = {
	getLocation
}
export default location;

使用

<button type="primary" @click="getLocation">獲取位置</button>
import location from '@/common/js/location.js'
/**
 * 獲取位置
 */
getLocation() {
    location.getLocation();
}

回調(diào)

location.getLocation((res) => {
    if (res != 1) return;
    // xxx
});

到此這篇關(guān)于uniapp獲取當(dāng)前位置及檢測授權(quán)狀態(tài)的文章就介紹到這了,更多相關(guān)uniapp獲取當(dāng)前位置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用js怎么把&字符換成"&amp:"

    用js怎么把&字符換成"&amp:"

    用js怎么把&字符換成"&amp:"...
    2006-10-10
  • JavaScript實現(xiàn)計數(shù)器基礎(chǔ)方法

    JavaScript實現(xiàn)計數(shù)器基礎(chǔ)方法

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)計數(shù)器的基礎(chǔ)方法
    ,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 動態(tài)加載、移除js/css文件的示例代碼

    動態(tài)加載、移除js/css文件的示例代碼

    本文簡單介紹動態(tài)加載、移除、替換js/css文件的示例代碼,代碼簡單易懂,非常不錯,具有參考借鑒加載,需要的朋友參考下吧
    2018-03-03
  • 基于WebUploader的文件上傳js插件

    基于WebUploader的文件上傳js插件

    這篇文章主要為大家詳細介紹了基于WebUploader的文件上傳js插件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • JavaScript如何獲取一個元素的樣式信息

    JavaScript如何獲取一個元素的樣式信息

    這篇文章主要介紹了JavaScript如何獲取一個元素的樣式信息,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 詳解Javascript實踐中的命令模式

    詳解Javascript實踐中的命令模式

    這篇文章主要介紹了Javascript實踐中的命令模式,對命令模式感興趣的同學(xué),可以參考下
    2021-05-05
  • Ajax與服務(wù)器(JSON)通信實例代碼

    Ajax與服務(wù)器(JSON)通信實例代碼

    這篇文章主要介紹了Ajax與服務(wù)器(JSON)通信實例代碼的相關(guān)資料,并附實例代碼,幫助大家學(xué)習(xí)理解此部分知識,需要的朋友可以參考下
    2016-11-11
  • JavaScript 大數(shù)據(jù)相加的問題

    JavaScript 大數(shù)據(jù)相加的問題

    寫一個函數(shù)處理大數(shù)據(jù)的相加問題,所謂的大數(shù)據(jù)是指超出了整型,長整型之類的常規(guī)數(shù)據(jù)類型表示范圍的數(shù)據(jù)。實現(xiàn)語言不限。
    2011-08-08
  • JS html時鐘制作代碼分享

    JS html時鐘制作代碼分享

    這篇文章主要為大家分享了JS html時鐘的制作代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 詳解JavaScript函數(shù)

    詳解JavaScript函數(shù)

    這篇文章主要介紹了JavaScript函數(shù),函數(shù)是由事件驅(qū)動的或者當(dāng)它被調(diào)用時執(zhí)行的可重復(fù)使用的代碼塊,需要的朋友可以參考下
    2015-12-12

最新評論