问题描述
GMS版本上Google Dialer拨出电话后,无法正常显示出通话界面
定位问题方式:
1)依次点击进入下面页面: 设置 -> 应用和通知 -> 默认应用
2)检查"电话应用"是否提示为无
3) 点击进入"电话应用",再次点击选择“电话”后返回上一级
4) 再次检查"电话应用"是否提示为"电话"
5) 回到Google Dialer中尝试拨打电话,通话界面可以正常显示
如果上述步骤2)中"电话应用"显示为无,步骤5)后又能正常显示“电话”, 代表是GMS适配有问题。
解决方案
解法:
GSM版本上,在codebase根目录的vendor/google/这个文件夹中,GMS安装包中app子目录下会对telecom的三个配置项进行resource overlay; 这样等GMS版本编译好后Telecom中默认的dialer配置项就自动变成Google dialer了。
但是MTK有override AOSP的Telecom应用,因此也需要对Mtk Telecom应用做resource overlay。
vendor/google/apps/GoogleDialer/overlay/vendor/mediatek/proprietary/packages/services/Telecomm/res/values
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Package name for the default in-call UI and dialer [DO NOT TRANSLATE] -->
<string name="ui_default_package" translatable="false">com.google.android.dialer</string>
<!-- Class name for the default main Dialer activity [DO NOT TRANSLATE] -->
<string name="dialer_default_class" translatable="false">com.google.android.dialer.extensions.GoogleDialtactsActivity</string>
<!-- Class name for the default incall activity [DO NOT TRANSLATE] -->
<string name="incall_default_class" translatable="false">com.android.incallui.InCallServiceImpl</string>
</resources>