如果用户安装了备用拨号器(即手机上有多个拨号器),则隐含意图会要求他们之间做出选择。
我的问题是我希望在代码中设置默认拨号器的明确意图,因为我不希望显示此选择,但所有操作都会转发到内置/默认拨号器。
这是我当前的(隐含)意图代码:
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")));
非常感谢。
答案 0 :(得分:1)
我认为你使用硬编码的URI(或者他们所称的任何东西)都在正确的轨道上,但至少可以说它是一种脆弱的方法。
您尝试做的事情违反了Android的开放式,灵活的设计,违背了Intent系统的目的,并且会对用户产生彻头彻尾的敌意。我知道如果一个应用程序强迫我使用蹩脚的默认拨号器,我会感到有点恼火;)
为什么需要使用内置拨号器?
我的建议:使用默认的Intent。建议您的用户选择内置拨号器,但尝试支持那些选择使用其他拨号器的用户。
答案 1 :(得分:0)
您应该在自定义电话拨号程序中调用处理呼叫的组件,而不是调用默认拨号程序。 Becoz您无法以编程方式为动作设置默认活动