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

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

分类: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);) 才 才能有效 挺奇怪的。

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