uniapp大致的安卓权限
一.检测app应用是否获取了安卓的位置权限
plus.android.checkPermission
用法:
二.请求获取权限
android.permission.ACCESS_FINE_LOCATION
是Android系统中的一个权限,用于允许应用访问设备的精确位置信息。这个权限通常与android.permission.ACCESS_COARSE_LOCATION
一起使用,它们同属于一个权限组
1.配置权限声明:在uniapp安卓项目中的AndroidManifest.xml
文件中声明该权限。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
2.权限请求流程:在需要使用定位功能的地方,先通过plus.android.checkPermission
方法检查是否已获得该权限。如果未获得权限,则使用permision.requestAndroidPermission
方法向用户请求权限。
if (!plus.android.checkPermission('android.permission.ACCESS_FINE_LOCATION')) {
permision.requestAndroidPermission({ permissions: 'android.permission.ACCESS_FINE_LOCATION' });
}
3.处理权限结果:在permision.requestAndroidPermission
方法的回调函数中,根据用户的授权结果进行相应的处理。例如:
permision.requestAndroidPermission({ permissions: 'android.permission.ACCESS_FINE_LOCATION' }).then(function (result) {
if (result.granted) {
// 权限已授权,可以执行相关操作
} else {
// 权限被拒绝,给出提示或采取其他措施
}
}).catch(function (error) {
// 处理异常情况
});
4.获取位置信息:在获得权限后,可以使用plus.geolocation.getCurrentPosition
方法获取用户的当前位置信息。例如:
plus.geolocation.getCurrentPosition({
success: function (position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
// 处理位置信息
},
fail: function (error) {
// 处理错误情况
}
});
示例
const permisions = permision.requestAndroid('android.permission.ACCESS_FINE_LOCATION')
permisions.then(res =>{
switch (res){
case 1:
this.isClose = false
// 获取位置权限
uni.navigateTo({
// url: "/pages/store/map/index?storeFrom=1&type=1&storeId="+(val ? this.collageStore.id : this.info.id)+'&isCollage='+val,
url: `/pages/store/map/index?storeFrom=1&type=1&storeId=${val ? this.collageStore.id : this.info.id}&isCollage=${val}`,
success(res) {
console.log('成功啦', res);
},
fail(err) {
console.log('失败啦', err);
}
})
break;
case 0:
plus.android.requestPermissions(['android.permission.ACCESS_FINE_LOCATION'])
break;
case -1:
this.isClose = false
console.log('拒绝');
uni.showModal({
title: '位置权限',
content: '您拒绝了位置权限,请前往设置-应用开启位置权限。',
success: function(res) {
if (res.confirm) {
uni.openAppAuthorizeSetting({
success (res) {
console.log(res)
}
})
console.log('用户点击确定');
} else if (res.cancel) {
console.log('用户点击取消');
}
}
})
break;
default:
break;
}
})
}
},
安卓系统需要获取权限的功能,安卓系统自己会弹出允许获取权限的弹框。例如打开修改头像,需要获取存储权限,所以安卓系统会自动弹出获取权限的弹框。由于app的上架审核需要对这个弹框获取权限用途做出解释。所以需要有一个弹框蒙层提示
// 请求获取权限
plus.android.requestPermissions(
// 获取存储权限
["android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"],
function(resultObj){
// 打印出权限的状态
console.log(resultObj)
// 判断是否获取到权限,在进行打开跳转图库
},
function(error){
console.log('error')
}
);
三.地图
uni.getLocation获取到当前位置
uni.chooseLocation可以跳转到配置的地图页面
// 获取当前位置信息
uni.getLocation({
type: 'wgs84', // 可选参数,表示返回的坐标类型,默认为'wgs84'
success: (res) => {
// 成功获取位置信息后,将经纬度作为参数传递给uni.chooseLocation
uni.chooseLocation({
latitude: res.latitude, // 当前纬度
longitude: res.longitude, // 当前经度
scale: 18, // 缩放比例,范围5~18,默认为18
success: (res) => {
// console.log('选择的位置信息:', res);
let address = that.$util.addressInfo(res.address);
this.addressInfo = address?address.city.slice(0,3) : '选择地址';
this.addressInfos = address?(address.city+address.district).slice(0,7) : '选择地址';
},
fail: function (err) {
console.error('选择位置失败:', err);
}
});
},
fail: function (err) {
console.error('获取位置失败:', err);
}
});