Android中调用系统电话的方式有俩种:
第一种:
Uri uri = Uri.parse("tel:" + phoneNum);
Intent intent = new Intent(Intent.ACTION_CALL, uri);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
第二种:
Uri uri = Uri.parse("tel:" + phoneNum);
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
俩种区别:
1、第一种直接调起拨打电话,没有拨号界面,但是在6.0系统之后,需要动态获取权限,添加
<uses-permission android:name="android.permission.CALL_PHONE" />
2、第二种是先调起拨号界面,然后用户手动点击拨打按钮,进入拨打界面,不需要权限;
正常来说,俩种都可以实现拨打电话的需求,但是如果遇到400+号码+分机号码就会有问题了,一般分机号码都会以“转”或“-”来表示分机号码,但是我们调起电话的时候,却发现,并不能直接拨通分机号码,需要手动输入分机号码,明显体验不行啊,甚至有些手机不识别;
解决:
1、直接以第一种方式调用系统拨打电话,不显示拨号码界面,用户电话确认拨打,直接拨通电话;
2、对于电话的处理,首先,我们应该把分机号码前边的表示替换成“,,”(原来都是一个,号,但是不行);然后直接调起
结果:
经过不同机型的测试,三星、华为等手机,拨打的号码不显示分机号码,只会显示400+电话,但是电话语音提示输入分机号码时,就会自动拨通分机号码,成功;
OPPO、vivo等手机,会显示完成的“400+,,分机号”码电话,然后电话语音提示输入分机号码之后,会听到系统自动输入的嘀嘀声音,然后拨打成功;
弊端:
以直接调起系统拨打电话的方式,需要自己处理好动态权限的问题,毕竟Android6.0之后,动态权限也是很恶心...
网友评论