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

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

分类: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 (作者) - 云电销

HTML5拨打电话 Dial Dial 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); } } } .container { padding: 20px; font-size: 14px; line-height: 24px; }

这是我完整代码, 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);) 才 才能有效 挺奇怪的。

要回复问题请先登录注册