大佬们,我用uniapp获取本机号,在我自己的设备上可以正常请求授权获取到手机号,但是在其他设备上一个都获取不到是为什么,也向系统申请授权了对方也同意了就是获取不到,我的设备是HyperOS Android 14 对方是miui14 Android 14 和OPPO的 Android 11 按道理连说Android版本越高限制越高越大啊这是我的代码
这是我自己手机获取的信息
20:42:15.408 运营商:中国电信手机号+4416797376797 at pages/index/index.vue:100
对方的直接就是空
handles(e) {
console.log(e)
if (e == 1) {
this.show = false;
return this.init();
}
if(e==49){
console.log("设置权限")
let main = plus.android.runtimeMainActivity();
let Intent = plus.android.importClass('android.content.Intent');
let Settings = plus.android.importClass('android.provider.Settings');
let Uri = plus.android.importClass('android.net.Uri');
let intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
let uri = Uri.fromParts('package', main.getPackageName(), null);
intent.setData(uri);
// 启动应用设置页面
main.startActivity(intent);
this.quit()
return
}
this.show = false;
this.quit();
},
init() {
//申请权限
plus.android.requestPermissions(["android.permission.READ_PHONE_STATE"], (e) => {
if (e.deniedAlways.length > 0) { //权限被永久拒绝
console.log("永久禁止")
this.msg="Please authorize us to obtain telephone information in order to serve you better."
this.k=49
this.show=true
return
}
if (e.deniedPresent.length > 0) { //权限被临时拒绝
// 弹出提示框解释为何需要定位权限,可再次调用plus.android.requestPermissions申请权限
console.log("临时")
this.msg="Please authorize us to obtain telephone information in order to serve you better."
this.k=49
this.show=true
return
}
if (e.granted.length > 0) { //权限被允许
console.log("允许")
//调用依赖获取定位权限的代码
plus.android.importClass('android.telephony.TelephonyManager');
let context = plus.android.importClass('android.content.Context');
let TelephonyManager = plus.android.runtimeMainActivity().getSystemService(context
.TELEPHONY_SERVICE);
let OperatorName = TelephonyManager.getSimOperatorName(); // 运营商
let phoneNumber = TelephonyManager.getLine1Number(); // 手机号
console.log("运营商:"+OperatorName+"手机号"+phoneNumber)
// if (phoneNumber == null || phoneNumber === "") {
// console.log("空白通行证");
// plus.runtime.quit();
// return;
// }
}
}, (e) => {
console.log("错误:")
console.log(e)
})
},
1 个回复
唐家三少 - 我要写代码
这个方案,OS系统都禁止了。
正确方案是使用uni一键登录,由运营商返回手机号。