Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小刘28
xz-uniapp
提交
118b6421
xz-uniapp
项目概览
小刘28
/
xz-uniapp
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
xz-uniapp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
118b6421
编写于
8月 16, 2022
作者:
小刘28
💬
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:添加权限配置库;
上级
e5a662ca
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
314 addition
and
1 deletion
+314
-1
.gitignore
.gitignore
+1
-0
androidPrivacy.json
androidPrivacy.json
+1
-1
js_sdk/wa-permission/permission.js
js_sdk/wa-permission/permission.js
+272
-0
pages/map/map.vue
pages/map/map.vue
+40
-0
未找到文件。
.gitignore
浏览文件 @
118b6421
...
...
@@ -119,6 +119,7 @@ dist
.hbuilderx/
unpackage/dist
unpackage/cache
unpackage/release
# gitee相关的忽略资源
.gitee/
...
...
androidPrivacy.json
浏览文件 @
118b6421
...
...
@@ -2,7 +2,7 @@
"version"
:
"1"
,
"prompt"
:
"template"
,
"title"
:
"服务协议和隐私政策"
,
"message"
:
" 请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/> 你可阅读<a href=
\"
/hybrid/html/privacy-policy.html
\"
>《服务协议》</a>和<a href=
\"
/
hybrid/html/service-agreement.html
\"
>《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。"
,
"message"
:
" 请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/> 你可阅读<a href=
\"
hybrid/html/privacy-policy.html
\"
>《服务协议》</a>和<a href=
\"
hybrid/html/service-agreement.html
\"
>《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。"
,
"buttonAccept"
:
"同意并接受"
,
"buttonRefuse"
:
"暂不同意"
,
"hrefLoader"
:
"system|default"
,
...
...
js_sdk/wa-permission/permission.js
0 → 100644
浏览文件 @
118b6421
/**
* 本模块封装了Android、iOS的应用权限判断、打开应用权限设置界面、以及位置系统服务是否开启
*/
var
isIos
// #ifdef APP-PLUS
isIos
=
(
plus
.
os
.
name
==
"
iOS
"
)
// #endif
// 判断推送权限是否开启
function
judgeIosPermissionPush
()
{
var
result
=
false
;
var
UIApplication
=
plus
.
ios
.
import
(
"
UIApplication
"
);
var
app
=
UIApplication
.
sharedApplication
();
var
enabledTypes
=
0
;
if
(
app
.
currentUserNotificationSettings
)
{
var
settings
=
app
.
currentUserNotificationSettings
();
enabledTypes
=
settings
.
plusGetAttribute
(
"
types
"
);
console
.
log
(
"
enabledTypes1:
"
+
enabledTypes
);
if
(
enabledTypes
==
0
)
{
console
.
log
(
"
推送权限没有开启
"
);
}
else
{
result
=
true
;
console
.
log
(
"
已经开启推送功能!
"
)
}
plus
.
ios
.
deleteObject
(
settings
);
}
else
{
enabledTypes
=
app
.
enabledRemoteNotificationTypes
();
if
(
enabledTypes
==
0
)
{
console
.
log
(
"
推送权限没有开启!
"
);
}
else
{
result
=
true
;
console
.
log
(
"
已经开启推送功能!
"
)
}
console
.
log
(
"
enabledTypes2:
"
+
enabledTypes
);
}
plus
.
ios
.
deleteObject
(
app
);
plus
.
ios
.
deleteObject
(
UIApplication
);
return
result
;
}
// 判断定位权限是否开启
function
judgeIosPermissionLocation
()
{
var
result
=
false
;
var
cllocationManger
=
plus
.
ios
.
import
(
"
CLLocationManager
"
);
var
status
=
cllocationManger
.
authorizationStatus
();
result
=
(
status
!=
2
)
console
.
log
(
"
定位权限开启:
"
+
result
);
// 以下代码判断了手机设备的定位是否关闭,推荐另行使用方法 checkSystemEnableLocation
/* var enable = cllocationManger.locationServicesEnabled();
var status = cllocationManger.authorizationStatus();
console.log("enable:" + enable);
console.log("status:" + status);
if (enable && status != 2) {
result = true;
console.log("手机定位服务已开启且已授予定位权限");
} else {
console.log("手机系统的定位没有打开或未给予定位权限");
} */
plus
.
ios
.
deleteObject
(
cllocationManger
);
return
result
;
}
// 判断麦克风权限是否开启
function
judgeIosPermissionRecord
()
{
var
result
=
false
;
var
avaudiosession
=
plus
.
ios
.
import
(
"
AVAudioSession
"
);
var
avaudio
=
avaudiosession
.
sharedInstance
();
var
permissionStatus
=
avaudio
.
recordPermission
();
console
.
log
(
"
permissionStatus:
"
+
permissionStatus
);
if
(
permissionStatus
==
1684369017
||
permissionStatus
==
1970168948
)
{
console
.
log
(
"
麦克风权限没有开启
"
);
}
else
{
result
=
true
;
console
.
log
(
"
麦克风权限已经开启
"
);
}
plus
.
ios
.
deleteObject
(
avaudiosession
);
return
result
;
}
// 判断相机权限是否开启
function
judgeIosPermissionCamera
()
{
var
result
=
false
;
var
AVCaptureDevice
=
plus
.
ios
.
import
(
"
AVCaptureDevice
"
);
var
authStatus
=
AVCaptureDevice
.
authorizationStatusForMediaType
(
'
vide
'
);
console
.
log
(
"
authStatus:
"
+
authStatus
);
if
(
authStatus
==
3
)
{
result
=
true
;
console
.
log
(
"
相机权限已经开启
"
);
}
else
{
console
.
log
(
"
相机权限没有开启
"
);
}
plus
.
ios
.
deleteObject
(
AVCaptureDevice
);
return
result
;
}
// 判断相册权限是否开启
function
judgeIosPermissionPhotoLibrary
()
{
var
result
=
false
;
var
PHPhotoLibrary
=
plus
.
ios
.
import
(
"
PHPhotoLibrary
"
);
var
authStatus
=
PHPhotoLibrary
.
authorizationStatus
();
console
.
log
(
"
authStatus:
"
+
authStatus
);
if
(
authStatus
==
3
)
{
result
=
true
;
console
.
log
(
"
相册权限已经开启
"
);
}
else
{
console
.
log
(
"
相册权限没有开启
"
);
}
plus
.
ios
.
deleteObject
(
PHPhotoLibrary
);
return
result
;
}
// 判断通讯录权限是否开启
function
judgeIosPermissionContact
()
{
var
result
=
false
;
var
CNContactStore
=
plus
.
ios
.
import
(
"
CNContactStore
"
);
var
cnAuthStatus
=
CNContactStore
.
authorizationStatusForEntityType
(
0
);
if
(
cnAuthStatus
==
3
)
{
result
=
true
;
console
.
log
(
"
通讯录权限已经开启
"
);
}
else
{
console
.
log
(
"
通讯录权限没有开启
"
);
}
plus
.
ios
.
deleteObject
(
CNContactStore
);
return
result
;
}
// 判断日历权限是否开启
function
judgeIosPermissionCalendar
()
{
var
result
=
false
;
var
EKEventStore
=
plus
.
ios
.
import
(
"
EKEventStore
"
);
var
ekAuthStatus
=
EKEventStore
.
authorizationStatusForEntityType
(
0
);
if
(
ekAuthStatus
==
3
)
{
result
=
true
;
console
.
log
(
"
日历权限已经开启
"
);
}
else
{
console
.
log
(
"
日历权限没有开启
"
);
}
plus
.
ios
.
deleteObject
(
EKEventStore
);
return
result
;
}
// 判断备忘录权限是否开启
function
judgeIosPermissionMemo
()
{
var
result
=
false
;
var
EKEventStore
=
plus
.
ios
.
import
(
"
EKEventStore
"
);
var
ekAuthStatus
=
EKEventStore
.
authorizationStatusForEntityType
(
1
);
if
(
ekAuthStatus
==
3
)
{
result
=
true
;
console
.
log
(
"
备忘录权限已经开启
"
);
}
else
{
console
.
log
(
"
备忘录权限没有开启
"
);
}
plus
.
ios
.
deleteObject
(
EKEventStore
);
return
result
;
}
// Android权限查询
function
requestAndroidPermission
(
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
(
'
已获取的权限:
'
+
grantedPermission
);
result
=
1
}
for
(
var
i
=
0
;
i
<
resultObj
.
deniedPresent
.
length
;
i
++
)
{
var
deniedPresentPermission
=
resultObj
.
deniedPresent
[
i
];
console
.
log
(
'
拒绝本次申请的权限:
'
+
deniedPresentPermission
);
result
=
0
}
for
(
var
i
=
0
;
i
<
resultObj
.
deniedAlways
.
length
;
i
++
)
{
var
deniedAlwaysPermission
=
resultObj
.
deniedAlways
[
i
];
console
.
log
(
'
永久拒绝申请的权限:
'
+
deniedAlwaysPermission
);
result
=
-
1
}
resolve
(
result
);
// 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限
// if (result != 1) {
// gotoAppPermissionSetting()
// }
},
function
(
error
)
{
console
.
log
(
'
申请权限错误:
'
+
error
.
code
+
"
=
"
+
error
.
message
);
resolve
({
code
:
error
.
code
,
message
:
error
.
message
});
}
);
});
}
// 使用一个方法,根据参数判断权限
function
judgeIosPermission
(
permissionID
)
{
if
(
permissionID
==
"
location
"
)
{
return
judgeIosPermissionLocation
()
}
else
if
(
permissionID
==
"
camera
"
)
{
return
judgeIosPermissionCamera
()
}
else
if
(
permissionID
==
"
photoLibrary
"
)
{
return
judgeIosPermissionPhotoLibrary
()
}
else
if
(
permissionID
==
"
record
"
)
{
return
judgeIosPermissionRecord
()
}
else
if
(
permissionID
==
"
push
"
)
{
return
judgeIosPermissionPush
()
}
else
if
(
permissionID
==
"
contact
"
)
{
return
judgeIosPermissionContact
()
}
else
if
(
permissionID
==
"
calendar
"
)
{
return
judgeIosPermissionCalendar
()
}
else
if
(
permissionID
==
"
memo
"
)
{
return
judgeIosPermissionMemo
()
}
return
false
;
}
// 跳转到**应用**的权限页面
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
{
// console.log(plus.device.vendor);
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
);
}
}
// 检查系统的设备服务是否开启
// var checkSystemEnableLocation = async function () {
function
checkSystemEnableLocation
()
{
if
(
isIos
)
{
var
result
=
false
;
var
cllocationManger
=
plus
.
ios
.
import
(
"
CLLocationManager
"
);
var
result
=
cllocationManger
.
locationServicesEnabled
();
console
.
log
(
"
系统定位开启:
"
+
result
);
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
);
console
.
log
(
"
系统定位开启:
"
+
result
);
return
result
}
}
module
.
exports
=
{
judgeIosPermission
:
judgeIosPermission
,
requestAndroidPermission
:
requestAndroidPermission
,
checkSystemEnableLocation
:
checkSystemEnableLocation
,
gotoAppPermissionSetting
:
gotoAppPermissionSetting
}
pages/map/map.vue
浏览文件 @
118b6421
...
...
@@ -5,11 +5,13 @@
</view>
<view
class=
""
>
<button
@
click=
"clickGetLocation()"
>
获取当前位置
</button>
<button
@
click=
"clickChooseLocation()"
>
选择位置
</button>
</view>
</view>
</
template
>
<
script
>
import
permision
from
"
@/js_sdk/wa-permission/permission.js
"
export
default
{
data
(
)
{
return
{
...
...
@@ -29,6 +31,44 @@
}
},
methods
:
{
async
clickChooseLocation
(
)
{
let
permisionID
=
'
android.permission.ACCESS_FINE_LOCATION
'
;
let
result
=
await
permision
.
requestAndroidPermission
(
permisionID
);
let
strStatus
if
(
result
==
1
)
{
strStatus
=
"
已获得授权
"
}
else
if
(
result
==
0
)
{
strStatus
=
"
未获得授权
"
}
else
{
strStatus
=
"
被永久拒绝权限
"
}
uni
.
showModal
(
{
content
:
permisionID
+
strStatus
,
showCancel
:
false
}
);
// uni.chooseLocation( {
// success: function ( res ) {
// console.log( '位置名称:' + res.name );
// console.log( '详细地址:' + res.address );
// console.log( '纬度:' + res.latitude );
// console.log( '经度:' + res.longitude );
// },
// fail:function( err ) {
// console.log( err );
// }
// } );
// uni.chooseImage({
// count: 6, //默认9
// sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
// sourceType: ['album'], //从相册选择
// success: function (res) {
// console.log(JSON.stringify(res.tempFilePaths));
// },
// fail:function ( err ) {
// console.log( err );
// }
// });
},
clickGetLocation
(
)
{
uni
.
showLoading
(
{
title
:
'
获取中...
'
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录