70 lines
2.5 KiB
JavaScript
70 lines
2.5 KiB
JavaScript
|
export default function(){
|
|||
|
//当应用无访问摄像头/相册权限,引导跳到设置界面
|
|||
|
uni.addInterceptor('chooseImage', {
|
|||
|
fail(e) { // 失败回调拦截 更多拦截器用法 [详情](https://uniapp.dcloud.io/api/interceptor?id=addinterceptor)
|
|||
|
console.log(e);
|
|||
|
if (uni.getSystemInfoSync().platform == "android" && e.errMsg == 'chooseImage:fail No Permission') {
|
|||
|
if (e.code === 11) {
|
|||
|
uni.showModal({
|
|||
|
title: "无法访问摄像头",
|
|||
|
content: "当前无摄像头访问权限,建议前往设置",
|
|||
|
confirmText: "前往设置",
|
|||
|
success(e) {
|
|||
|
if (e.confirm) {
|
|||
|
gotoAppPermissionSetting()
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
} else {
|
|||
|
uni.showModal({
|
|||
|
title: "无法访问相册",
|
|||
|
content: "当前无系统相册访问权限,建议前往设置",
|
|||
|
confirmText: "前往设置",
|
|||
|
success(e) {
|
|||
|
if (e.confirm) {
|
|||
|
gotoAppPermissionSetting()
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
} else if (e.errCode === 2&&e.errMsg == "chooseImage:fail No filming permission") {
|
|||
|
console.log('e.errMsg === 2 ios无法拍照权限 ');
|
|||
|
// 注:e.errCode === 8 ios无从相册选择图片的权限 api已内置无需自己用拦截器实现
|
|||
|
uni.showModal({
|
|||
|
title: "无法访问摄像头",
|
|||
|
content: "当前无摄像头访问权限,建议前往设置",
|
|||
|
confirmText: "前往设置",
|
|||
|
success(e) {
|
|||
|
if (e.confirm) {
|
|||
|
gotoAppPermissionSetting()
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
})
|
|||
|
|
|||
|
//跳转到**应用**的权限页面 参考来源:https://ext.dcloud.net.cn/plugin?id=594
|
|||
|
function gotoAppPermissionSetting() {
|
|||
|
if (uni.getSystemInfoSync().platform == "ios") {
|
|||
|
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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|