update: 修复华为手机打电话问题
This commit is contained in:
parent
5829608f98
commit
23daffe0fb
@ -4,6 +4,9 @@
|
||||
"version" : "0.0",
|
||||
"configurations" : [
|
||||
{
|
||||
"app" : {
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"app-plus" : {
|
||||
"launchtype" : "remote"
|
||||
},
|
||||
@ -20,7 +23,8 @@
|
||||
"type" : "uniCloud"
|
||||
},
|
||||
{
|
||||
"playground" : "custom",
|
||||
"customPlaygroundType" : "device",
|
||||
"playground" : "standard",
|
||||
"type" : "uni-app:app-android"
|
||||
},
|
||||
{
|
||||
|
||||
@ -1,39 +1,41 @@
|
||||
{
|
||||
"name": "小发同城",
|
||||
"appid": "__UNI__95F809F",
|
||||
"package": "com.xiaofa.shopAdmin",
|
||||
"description": "",
|
||||
"versionName": "1.0.0",
|
||||
"versionCode": 100,
|
||||
"transformPx": false,
|
||||
"name" : "小发同城",
|
||||
"appid" : "__UNI__95F809F",
|
||||
"package" : "com.xiaofa.shopAdmin",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.0",
|
||||
"versionCode" : 100,
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus": {
|
||||
"usingComponents": true,
|
||||
"nvueStyleCompiler": "uni-app",
|
||||
"compilerVersion": 3,
|
||||
"splashscreen": {
|
||||
"alwaysShowBeforeRender": true,
|
||||
"waiting": true,
|
||||
"autoclose": true,
|
||||
"delay": 0
|
||||
"app-plus" : {
|
||||
"usingComponents" : true,
|
||||
"nvueStyleCompiler" : "uni-app",
|
||||
"compilerVersion" : 3,
|
||||
"splashscreen" : {
|
||||
"alwaysShowBeforeRender" : true,
|
||||
"waiting" : true,
|
||||
"autoclose" : true,
|
||||
"delay" : 0
|
||||
},
|
||||
/* 模块配置 */
|
||||
"modules": {
|
||||
"Maps": {},
|
||||
"Camera": {},
|
||||
"Record": {},
|
||||
"VideoPlayer": {},
|
||||
"UIWebview": {},
|
||||
"Push": {}
|
||||
"modules" : {
|
||||
"Maps" : {},
|
||||
"Camera" : {},
|
||||
"Record" : {},
|
||||
"VideoPlayer" : {},
|
||||
"UIWebview" : {},
|
||||
"Push" : {}
|
||||
},
|
||||
/* 应用发布信息 */
|
||||
"distribute": {
|
||||
"distribute" : {
|
||||
/* android打包配置 */
|
||||
"android": {
|
||||
"targetSdkVersion": 30,
|
||||
"minSdkVersion": 21,
|
||||
"compileSdkVersion": 30,
|
||||
"permissions": [
|
||||
"android" : {
|
||||
"targetSdkVersion" : 30,
|
||||
"minSdkVersion" : 21,
|
||||
"compileSdkVersion" : 30,
|
||||
"permissions" : [
|
||||
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
@ -43,7 +45,6 @@
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
@ -52,83 +53,83 @@
|
||||
]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios": {
|
||||
"privacyDescription": {
|
||||
"NSPhotoLibraryAddUsageDescription": "此App会在上传头像图片服务中访问您的相机权限",
|
||||
"NSPhotoLibraryUsageDescription": "此App会在上传头像图片服务中访问您的相机权限",
|
||||
"NSCameraUsageDescription": "此App会在上传头像图片服务中访问您的相机权限",
|
||||
"NSMicrophoneUsageDescription": "此APP会在使用声音识别服务中使用您的麦克风权限",
|
||||
"NSLocationWhenInUseUsageDescription": "此App会在使用导航服务中使用您的定位权限",
|
||||
"NSLocationAlwaysUsageDescription": "此App会在使用导航服务中使用您的定位权限",
|
||||
"NSLocationAlwaysAndWhenInUseUsageDescription": "此App会在使用导航服务中使用您的定位权限"
|
||||
"ios" : {
|
||||
"privacyDescription" : {
|
||||
"NSPhotoLibraryAddUsageDescription" : "此App会在上传头像图片服务中访问您的相机权限",
|
||||
"NSPhotoLibraryUsageDescription" : "此App会在上传头像图片服务中访问您的相机权限",
|
||||
"NSCameraUsageDescription" : "此App会在上传头像图片服务中访问您的相机权限",
|
||||
"NSMicrophoneUsageDescription" : "此APP会在使用声音识别服务中使用您的麦克风权限",
|
||||
"NSLocationWhenInUseUsageDescription" : "此App会在使用导航服务中使用您的定位权限",
|
||||
"NSLocationAlwaysUsageDescription" : "此App会在使用导航服务中使用您的定位权限",
|
||||
"NSLocationAlwaysAndWhenInUseUsageDescription" : "此App会在使用导航服务中使用您的定位权限"
|
||||
},
|
||||
"dSYMs": false,
|
||||
"UIBackgroundModes": "audio"
|
||||
"dSYMs" : false,
|
||||
"UIBackgroundModes" : "audio"
|
||||
},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs": {
|
||||
"maps": {},
|
||||
"push": {
|
||||
"unipush": {
|
||||
"version": "2",
|
||||
"offline": false,
|
||||
"appid": "rQxaGAKl7t83KlTubAaKC3",
|
||||
"appkey": "QSElTn6ttq5nmrIZtFhCT"
|
||||
"sdkConfigs" : {
|
||||
"maps" : {},
|
||||
"push" : {
|
||||
"unipush" : {
|
||||
"version" : "2",
|
||||
"offline" : false,
|
||||
"appid" : "rQxaGAKl7t83KlTubAaKC3",
|
||||
"appkey" : "QSElTn6ttq5nmrIZtFhCT"
|
||||
}
|
||||
}
|
||||
},
|
||||
"icons": {
|
||||
"android": {
|
||||
"hdpi": "unpackage/res/icons/72x72.png",
|
||||
"xhdpi": "unpackage/res/icons/96x96.png",
|
||||
"xxhdpi": "unpackage/res/icons/144x144.png",
|
||||
"xxxhdpi": "unpackage/res/icons/192x192.png"
|
||||
"icons" : {
|
||||
"android" : {
|
||||
"hdpi" : "unpackage/res/icons/72x72.png",
|
||||
"xhdpi" : "unpackage/res/icons/96x96.png",
|
||||
"xxhdpi" : "unpackage/res/icons/144x144.png",
|
||||
"xxxhdpi" : "unpackage/res/icons/192x192.png"
|
||||
},
|
||||
"ios": {
|
||||
"appstore": "unpackage/res/icons/1024x1024.png",
|
||||
"ipad": {
|
||||
"app": "unpackage/res/icons/76x76.png",
|
||||
"app@2x": "unpackage/res/icons/152x152.png",
|
||||
"notification": "unpackage/res/icons/20x20.png",
|
||||
"notification@2x": "unpackage/res/icons/40x40.png",
|
||||
"proapp@2x": "unpackage/res/icons/167x167.png",
|
||||
"settings": "unpackage/res/icons/29x29.png",
|
||||
"settings@2x": "unpackage/res/icons/58x58.png",
|
||||
"spotlight": "unpackage/res/icons/40x40.png",
|
||||
"spotlight@2x": "unpackage/res/icons/80x80.png"
|
||||
"ios" : {
|
||||
"appstore" : "unpackage/res/icons/1024x1024.png",
|
||||
"ipad" : {
|
||||
"app" : "unpackage/res/icons/76x76.png",
|
||||
"app@2x" : "unpackage/res/icons/152x152.png",
|
||||
"notification" : "unpackage/res/icons/20x20.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"proapp@2x" : "unpackage/res/icons/167x167.png",
|
||||
"settings" : "unpackage/res/icons/29x29.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"spotlight" : "unpackage/res/icons/40x40.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png"
|
||||
},
|
||||
"iphone": {
|
||||
"app@2x": "unpackage/res/icons/120x120.png",
|
||||
"app@3x": "unpackage/res/icons/180x180.png",
|
||||
"notification@2x": "unpackage/res/icons/40x40.png",
|
||||
"notification@3x": "unpackage/res/icons/60x60.png",
|
||||
"settings@2x": "unpackage/res/icons/58x58.png",
|
||||
"settings@3x": "unpackage/res/icons/87x87.png",
|
||||
"spotlight@2x": "unpackage/res/icons/80x80.png",
|
||||
"spotlight@3x": "unpackage/res/icons/120x120.png"
|
||||
"iphone" : {
|
||||
"app@2x" : "unpackage/res/icons/120x120.png",
|
||||
"app@3x" : "unpackage/res/icons/180x180.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"notification@3x" : "unpackage/res/icons/60x60.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"settings@3x" : "unpackage/res/icons/87x87.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png",
|
||||
"spotlight@3x" : "unpackage/res/icons/120x120.png"
|
||||
}
|
||||
}
|
||||
},
|
||||
"splashscreen": {
|
||||
"androidStyle": "default",
|
||||
"useOriginalMsgbox": true
|
||||
"splashscreen" : {
|
||||
"androidStyle" : "default",
|
||||
"useOriginalMsgbox" : true
|
||||
}
|
||||
},
|
||||
"uniStatistics": {
|
||||
"enable": true
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
},
|
||||
/* 快应用特有相关 */
|
||||
"quickapp": {},
|
||||
"quickapp" : {},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin": {
|
||||
"appid": "",
|
||||
"setting": {
|
||||
"urlCheck": false
|
||||
"mp-weixin" : {
|
||||
"appid" : "",
|
||||
"setting" : {
|
||||
"urlCheck" : false
|
||||
},
|
||||
"usingComponents": true
|
||||
"usingComponents" : true
|
||||
},
|
||||
"h5": {
|
||||
"h5" : {
|
||||
// "devServer" : {
|
||||
// "https" : true,
|
||||
// "host" : "127.0.0.1",
|
||||
@ -146,27 +147,28 @@
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
"title": "小发商城商家中心",
|
||||
"template": "index.html",
|
||||
"router": {
|
||||
"mode": "history",
|
||||
"base": "/mchapp/"
|
||||
"title" : "小发商城商家中心",
|
||||
"template" : "index.html",
|
||||
"router" : {
|
||||
"mode" : "history",
|
||||
"base" : "/mchapp/"
|
||||
}
|
||||
},
|
||||
"mp-alipay": {
|
||||
"usingComponents": true
|
||||
"mp-alipay" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-baidu": {
|
||||
"usingComponents": true
|
||||
"mp-baidu" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-toutiao": {
|
||||
"usingComponents": true
|
||||
"mp-toutiao" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"uniStatistics": {
|
||||
"enable": false,
|
||||
"version": "2"
|
||||
"uniStatistics" : {
|
||||
"enable" : false,
|
||||
"version" : "2"
|
||||
},
|
||||
"vueVersion": "2",
|
||||
"fallbackLocale": "zh-Hans"
|
||||
"vueVersion" : "2",
|
||||
"fallbackLocale" : "zh-Hans"
|
||||
}
|
||||
/* 5+App特有相关 */
|
||||
|
||||
|
||||
@ -465,6 +465,12 @@ import {
|
||||
GetInitiativeOrderRefund,
|
||||
GetOrderPicking,
|
||||
} from "@/api/order";
|
||||
|
||||
import {
|
||||
makePhoneCall,
|
||||
} from "@/utils/callPhone";
|
||||
|
||||
|
||||
export default {
|
||||
props: {
|
||||
orderItem: {
|
||||
@ -656,24 +662,27 @@ export default {
|
||||
);
|
||||
},
|
||||
makePhone(phone) {
|
||||
// #ifdef H5
|
||||
uni.showToast({
|
||||
title: "H5环境不支持",
|
||||
icon: "none",
|
||||
});
|
||||
// #endif
|
||||
console.log(makePhoneCall);
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: phone,
|
||||
success: function () {
|
||||
console.log("拨打电话成功");
|
||||
},
|
||||
fail: function () {
|
||||
console.log("拨打电话失败");
|
||||
},
|
||||
});
|
||||
// #endif
|
||||
makePhoneCall(phone)
|
||||
// // #ifdef H5
|
||||
// uni.showToast({
|
||||
// title: "H5环境不支持",
|
||||
// icon: "none",
|
||||
// });
|
||||
// // #endif
|
||||
|
||||
// // #ifdef APP-PLUS
|
||||
// uni.makePhoneCall({
|
||||
// phoneNumber: phone,
|
||||
// success: function () {
|
||||
// console.log("拨打电话成功");
|
||||
// },
|
||||
// fail: function () {
|
||||
// console.log("拨打电话失败");
|
||||
// },
|
||||
// });
|
||||
// // #endif
|
||||
},
|
||||
copy(num, type) {
|
||||
uni.setClipboardData({
|
||||
|
||||
@ -280,6 +280,12 @@ import {
|
||||
} from "@/api/order";
|
||||
import tuiRadio from "@/components/tui-radio/tui-radio.vue";
|
||||
import tuiRadioGroup from "@/components/tui-radio-group/tui-radio-group.vue";
|
||||
|
||||
import {
|
||||
makePhoneCall,
|
||||
} from "@/utils/callPhone";
|
||||
|
||||
|
||||
export default {
|
||||
props: {
|
||||
orderItem: {
|
||||
@ -468,24 +474,25 @@ export default {
|
||||
this.returnOrderType = type;
|
||||
},
|
||||
makePhone(phone) {
|
||||
// #ifdef H5
|
||||
uni.showToast({
|
||||
title: "H5环境不支持",
|
||||
icon: "none",
|
||||
});
|
||||
// #endif
|
||||
makePhoneCall(phone)
|
||||
// // #ifdef H5
|
||||
// uni.showToast({
|
||||
// title: "H5环境不支持",
|
||||
// icon: "none",
|
||||
// });
|
||||
// // #endif
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: phone,
|
||||
success: function () {
|
||||
console.log("拨打电话成功");
|
||||
},
|
||||
fail: function () {
|
||||
console.log("拨打电话失败");
|
||||
},
|
||||
});
|
||||
// #endif
|
||||
// // #ifdef APP-PLUS
|
||||
// uni.makePhoneCall({
|
||||
// phoneNumber: phone,
|
||||
// success: function () {
|
||||
// console.log("拨打电话成功");
|
||||
// },
|
||||
// fail: function () {
|
||||
// console.log("拨打电话失败");
|
||||
// },
|
||||
// });
|
||||
// // #endif
|
||||
},
|
||||
copy(num, type) {
|
||||
uni.setClipboardData({
|
||||
|
||||
90
java-mall-app-shop-admin/utils/callPhone.js
Normal file
90
java-mall-app-shop-admin/utils/callPhone.js
Normal file
@ -0,0 +1,90 @@
|
||||
// 动态请求打电话权限(通用方法)
|
||||
export function requestCallPermission() {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (uni.getSystemInfoSync().platform !== 'android') {
|
||||
// 非安卓设备直接返回(如iOS不需要此权限)
|
||||
resolve(true);
|
||||
return;
|
||||
}
|
||||
|
||||
plus.android.requestPermissions(
|
||||
["android.permission.CALL_PHONE"],
|
||||
(result) => {
|
||||
const granted = result.granted || [];
|
||||
const deniedAlways = result.deniedAlways || [];
|
||||
|
||||
if (granted.includes("android.permission.CALL_PHONE")) {
|
||||
resolve(true);
|
||||
} else if (deniedAlways.length > 0) {
|
||||
// 永久拒绝,引导至设置页
|
||||
uni.showModal({
|
||||
title: "权限不足",
|
||||
content: "请在设置中开启电话权限以使用拨号功能",
|
||||
confirmText: "去设置",
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
plus.runtime.openURL("app-settings:");
|
||||
}
|
||||
resolve(false);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 临时拒绝,提示用户
|
||||
uni.showToast({ title: "需要电话权限才能拨号", icon: "none" });
|
||||
resolve(false);
|
||||
}
|
||||
},
|
||||
(err) => {
|
||||
console.error("权限请求失败:", err);
|
||||
resolve(false);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
// 判断是否为华为设备
|
||||
export function isHuaweiDevice() {
|
||||
return new Promise((resolve) => {
|
||||
uni.getSystemInfo({
|
||||
success: (res) => {
|
||||
const brand = (res.brand || '').toLowerCase();
|
||||
resolve(brand.includes('huawei'));
|
||||
},
|
||||
fail: () => resolve(false)
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// 统一拨号入口(根据设备类型选择方式)
|
||||
export async function makePhoneCall(phoneNumber) {
|
||||
if (!phoneNumber) {
|
||||
uni.showToast({ title: "请输入正确的手机号", icon: "none" });
|
||||
return;
|
||||
}
|
||||
|
||||
// 先请求权限
|
||||
const hasPermission = await requestCallPermission();
|
||||
if (!hasPermission) return;
|
||||
|
||||
// 判断设备类型
|
||||
const isHuawei = await isHuaweiDevice();
|
||||
|
||||
try {
|
||||
if (isHuawei) {
|
||||
// 华为设备使用plus原生API,显示拨号界面(避免直接拨号失败)
|
||||
plus.device.dial(phoneNumber, false);
|
||||
} else {
|
||||
// 其他设备使用uni标准API
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: phoneNumber,
|
||||
fail: (err) => {
|
||||
console.error("拨号失败:", err);
|
||||
uni.showToast({ title: "拨号失败,请重试", icon: "none" });
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("拨号异常:", err);
|
||||
uni.showToast({ title: "系统不支持该操作", icon: "none" });
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user