5***@qq.com
5***@qq.com
  • 发布:2021-02-04 10:23
  • 更新:2021-02-04 18:42
  • 阅读:1161

安卓直接打电话功能,本地开发环境调试可以正常用,云端打包之后就失效了?

分类:uni-app
androidCall(tel) {  
        // 导入Activity、Intent类  
        var Intent = plus.android.importClass("android.content.Intent");  
        var Uri = plus.android.importClass("android.net.Uri");  
        // 获取主Activity对象的实例  
        var main = plus.android.runtimeMainActivity();  
        // 创建Intent  
        var uri = Uri.parse("tel:" + tel); // 这里可修改电话号码  
        var call = new Intent("android.intent.action.CALL", uri);  
        // 调用startActivity方法拨打电话  
        main.startActivity(call);  
    }

安卓直接打电话功能,本地开发环境调试可以正常用,云端打包之后就失效了?

这就很尴尬啊, 本地开发可以,云端打包之后就不行了 失效没反应 很尴尬。

这是我一个人的问题还是 本身就存在这个问题 ?

2021-02-04 10:23 负责人:无 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

核心原因是你这个NJS代码没有申请CALL_PHONE权限。plus.device.dial会自动申请CALL_PHONE权限。直接用plus.device.dial就行了。非得用NJS干嘛

  • demon123

    谢谢大佬, 搞定了,你这么一说原因更清楚了。感谢感谢。

    2021-02-27 16:38

DCloud_App_Array

DCloud_App_Array

确认是否配置权限:

<uses-permission android:name="android.permission.CALL_PHONE"/>

建议使用5+ API:plus.device.dial
参考:https://www.html5plus.org/doc/zh_cn/device.html#plus.device.dial

5***@qq.com

5***@qq.com (作者) - 云电销

<template>

<view>  
    <a href="TEL:10086" rel="external nofollow">HTML5拨打电话</a>  

    <button @tap.stop="dialTest()">Dial</button>  
    <button @tap.stop="androidCall(10086)">Dial</button>  

</view>  

</template>

<script>
export default {
data() {
return {
href: 'https://uniapp.dcloud.io/component/README?id=uniui'
}
},
methods: {
dialTest() {
plus.device.dial('114', false);
},
androidCall(tel) {
// 导入Activity、Intent类
var Intent = plus.android.importClass("android.content.Intent");
var Uri = plus.android.importClass("android.net.Uri");
// 获取主Activity对象的实例
var main = plus.android.runtimeMainActivity();
// 创建Intent
var uri = Uri.parse("tel:" + tel); // 这里可修改电话号码
var call = new Intent("android.intent.action.CALL", uri);
// 调用startActivity方法拨打电话
main.startActivity(call);
}
}
}
</script>

<style>
.container {
padding: 20px;
font-size: 14px;
line-height: 24px;
}
</style>

这是我完整代码, 3种方式都测试了, 安卓直接打电话 后面2种 开发环境可以,云打包之后的 apk 就不行了。

你可以拿着代码自己测试下。

权限都给完也不行,我测试了。

demon123

demon123

此问题 找到 了解决办法。

先说下目前现象

如果 用安卓 代码 (var call = new Intent("android.intent.action.CALL", uri);)
打电话就无效,,如果安卓代码之前 先调用下 plus.device.dial(tel, false); 然后安卓代码就有效、
因此 plus.device.dial(tel, false); 是百分百有效的, 所以改为用 plus.device.dial(tel, false); 了。

而 安卓代码的要必须 先 (plus.device.dial(tel, false);) 才 才能有效 挺奇怪的。

该问题目前已经被锁定, 无法添加新回复