question_uniapp/pages/sdkDemo/permission.vue

231 lines
6.1 KiB
Vue
Raw Normal View History

2025-06-06 03:08:19 +08:00
<template>
<view>
<nav-bar title="APP权限判断和跳转到系统设置"></nav-bar>
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
<view class="table_box">
<view class="table_title">SDK说明</view>
<view class="table_content"><text @click="onJumpWebview('https://ext.dcloud.net.cn/plugin?id=594')">根据官方SDK修改https://ext.dcloud.net.cn/plugin?id=594</text></view>
<view class="table_head">
<text>permissionID</text>
<text>说明</text>
</view>
<view class="table_content">
<text>location</text>
<text>位置权限</text>
</view>
<view class="table_content">
<text>camera</text>
<text>摄像头权限</text>
</view>
<view class="table_content">
<text>photoLibrary</text>
<text>相册权限</text>
</view>
<view class="table_content">
<text>record</text>
<text>麦克风权限</text>
</view>
<view class="table_content">
<text>push</text>
<text>推送权限</text>
</view>
<view class="table_content">
<text>contact</text>
<text>通讯录</text>
</view>
<view class="table_content">
<text>calendar</text>
<text>日历</text>
</view>
<view class="table_content">
<text>memo</text>
<text>备忘录</text>
</view>
<view class="table_content">
<text>call_phone</text>
<text>拨打电话</text>
</view>
</view>
<view class="input_form_box">
<view class="input_box btm_line">
<view class="name">获取位置权限</view>
<view class="select_info" @click="getDevicePermission('location')">
<view class="select">点击获取</view>
</view>
</view>
<view class="input_box btm_line">
<view class="name">获取摄像头权限</view>
<view class="select_info" @click="getDevicePermission('camera')">
<view class="select">点击获取</view>
</view>
</view>
<view class="input_box btm_line">
<view class="name">获取相册权限</view>
<view class="select_info" @click="getDevicePermission('photoLibrary')">
<view class="select">点击获取</view>
</view>
</view>
<view class="input_box btm_line">
<view class="name">获取麦克风权限</view>
<view class="select_info" @click="getDevicePermission('record')">
<view class="select">点击获取</view>
</view>
</view>
<view class="input_box btm_line">
<view class="name">获取推送权限</view>
<view class="select_info" @click="getDevicePermission('push')">
<view class="select">点击获取</view>
</view>
</view>
<view class="input_box btm_line">
<view class="name">获取通讯录权限</view>
<view class="select_info" @click="getDevicePermission('contact')">
<view class="select">点击获取</view>
</view>
</view>
<view class="input_box btm_line">
<view class="name">获取日历权限</view>
<view class="select_info" @click="getDevicePermission('calendar')">
<view class="select">点击获取</view>
</view>
</view>
<view class="input_box btm_line">
<view class="name">获取备忘录权限</view>
<view class="select_info" @click="getDevicePermission('memo')">
<view class="select">点击获取</view>
</view>
</view>
<view class="input_box btm_line">
<view class="name">获取拨打电话权限</view>
<view class="select_info" @click="getDevicePermission('call_phone')">
<view class="select">点击获取</view>
</view>
</view>
</view>
<view class="input_form_box">
<view class="input_box btm_line">
<view class="name">跳转到手机应用设置页面</view>
<view class="select_info" @click="onJumpSystemSettings">
<view class="select">点击跳转</view>
</view>
</view>
<view class="input_box btm_line">
<view class="name">检查系统的设备服务是否开启</view>
<view class="select_info" @click="onExamination">
<view class="select">点击获取</view>
</view>
</view>
</view>
</view>
</template>
<script>
// #ifdef APP-PLUS
import { judgePermission, gotoAppPermissionSetting, checkSystemEnableLocation } from '@/plugins/permission';
// #endif
export default {
data() {
return {
};
},
//方法
methods: {
// 获取权限
getDevicePermission(permissionID){
/*
*permissionID:
* location => 位置
* camera => 摄像头
* photoLibrary => 相册
* record => 麦克风
* push => 推送
* contact => 通讯录
* calendar => 日历
* memo => 备忘录
* call_phone => 拨打电话
*/
// #ifdef APP-PLUS
judgePermission(permissionID, function(res){
console.log(res);
if (res === 1) {
uni.showToast({
title:"已获取到权限",
icon:"none"
});
}else if(res === 0){
uni.showToast({
title:"正在获取权限,会弹窗提示",
icon:"none"
});
}else if(res === -1){
uni.showToast({
title:"用户已拒绝权限,会弹窗提示用户到【系统设置】里面开启权限",
icon:"none"
});
}
});
// #endif
// #ifndef APP-PLUS
uni.showToast({
title:"请在APP环境使用",
icon:"none"
});
// #endif
},
// 跳转到应用设置
onJumpSystemSettings(){
// #ifdef APP-PLUS
gotoAppPermissionSetting();
// #endif
// #ifndef APP-PLUS
uni.showToast({
title:"请在APP环境使用",
icon:"none"
});
// #endif
},
// 检查系统的设备服务是否开启
onExamination(){
// #ifdef APP-PLUS
if(checkSystemEnableLocation()){
uni.showToast({
title:"已开启设备服务权限",
icon:"none"
});
}else{
uni.showToast({
title:"未开启设备服务权限",
icon:"none"
});
}
// #endif
// #ifndef APP-PLUS
uni.showToast({
title:"请在APP环境使用",
icon:"none"
});
// #endif
},
onJumpWebview(url){
// #ifdef H5
window.open(url);
// #endif
// #ifndef H5
this.$store.commit("setWebViewUrl", url);
uni.navigateTo({
url: '/pages/template/webView'
});
// #endif
}
}
};
</script>
<style lang="scss" scoped>
@import '@/style/mixin.scss';
.input_form_box {
margin-bottom: 20rpx;
}
</style>