1

如果用户安装了备用拨号器(即他们的电话上有多个拨号器),则隐含意图将要求在它们之间进行选择。

我的问题是我希望在代码中为默认拨号器设置一个明确的意图,因为我不希望显示此选择,但所有操作都转发到内置/默认拨号器,无论它可能是什么。

这是我当前的(隐式)意图代码:

Log.i(TAG, "Sending: "+Number); 
Intent dialIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ Number));

//called from outside of an android.app.Activity Context
dialIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialIntent);

如何强制明确意图?

我试过这个 - 但我认为我在这里走错了路......

dialIntent.setComponent((new ComponentName("com.android.internal.telephony","com.android.internal.telephony.ITelephony.class")));

非常感谢。

4

2 回答 2

1

我认为您使用硬编码的 URI(或任何名称)走在正确的轨道上,但至少可以说,这是一种脆弱的方法。

你试图做的事情违背了 Android 的开放、灵活的设计,违背了 Intent 系统的目的,并且对用户完全怀有敌意。我知道如果一个应用程序强迫我使用蹩脚的默认拨号器,我会有点生气;)

为什么需要使用内置拨号器?

我的建议:使用默认的 Intent。建议您的用户选择内置拨号器,但尽量支持选择使用其他拨号器的用户。

于 2012-07-12T04:31:49.630 回答
0

好吧,而不是调用默认拨号器,您应该调用处理呼叫的自定义电话拨号器中的组件。因为您无法以编程方式为操作设置默认活动

于 2012-07-12T09:25:45.160 回答