更改默认拨号程序的请求未在某些设备上显示系统对话框

时间:2019-01-15 11:51:36

标签: android huawei android-dialer

我们的应用必须成为默认的拨号器应用(也称为“默认电话处理程序”,“默认呼叫应用”),以便能够在Android的new permissions policy下拨打电话。

我们使用以下意图显示系统对话框,要求用户将我们的应用设置为默认应用:

Intent intent = new Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER);
intent.putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, getPackageName());
startActivityForResult(intent, RC_DEFAULT_PHONE);  

这在我们所有的测试设备上都运行良好,并且显然对大多数用户而言,但是不显示任何对话框,而是立即为某些设备返回RESULT_CANCELED结果代码。

通过查看报告,似乎大多数报告(如果不是全部)都来自Huawei设备(以及Huawei的品牌-Honor)。

有没有办法在这些设备上显示默认的通话应用对话框?
我们可以运行其他任何方法来帮助用户手动将我们的应用设置为默认的调用应用吗?

2 个答案:

答案 0 :(得分:0)

一些谷歌搜索返回,荣誉设备需要您更改设置中的默认拨号器应用程序,也许直接向该设置页面启动意图?至于特定的设置页面参数,则必须在荣誉设备上进行检查

startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);

然后您可以在应用程序中处理结果(通过检查拨号程序现在是否为默认值),否则向用户告知失败

答案 1 :(得分:0)

也许添加以下<intent-filter>可以解决问题:

<intent-filter>
      <action android:name="android.intent.action.DIAL" />
      <category android:name="android.intent.category.DEFAULT" />
      <data android:scheme="tel"/>
</intent-filter>