安卓5中的Intent Action Call

3

我有这段代码,在Android 4.4及之前的版本中可以正常工作:

Intent intent = new Intent(Intent.ACTION_CALL);         
intent.setPackage("com.android.phone");
intent.setData(Uri.parse("tel:" + number));
context.startActivity(intent);

现在,在Android 5.0棒棒糖版本中,这段代码不起作用,并显示出以下异常:

Fatal Exception: android.content.ActivityNotFoundException
No Activity found to handle Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxx pkg=com.android.phone }

文档中,这个Intent看起来没有被废弃:
你有什么想法吗?谢谢。

不需要设置包,请尝试移除setPackage()。 - Haresh Chhelana
使用软件包的原因是我想使用默认的电话应用程序。 - Borja
4个回答

9

似乎包名称已更改为

com.android.phone 

为了

com.android.server.telecom.

希望这能帮助到您!

1

除了手动编码操作字符串之外,另一种选择是使用默认的 intent,如下所示:

Intent out = new Intent(Intent.ACTION_CALL );
out.setData(Uri.parse("tel:" + Uri.encode("+12345#123")));
startActivity(out);

这将传递意图到系统,所有具备电话功能的应用程序都会响应,而不是通过操作字符串确定的特定应用程序。

这段代码可以运行,但使用包的原因是我想使用默认的电话应用程序。 - Borja
你遇到了棒棒糖的问题,可能是因为他们改变了包名。(如果你了解Intent,启动Activity时不需要包名) - Arun Salaria
如果您有其他应用程序,如Skype,则必须先选择一个选项。 - Borja
但你也可以从Skype打电话,有什么区别呢?(此意图为您提供选择的选项) - Arun Salaria
我想要这个:https://dev59.com/s37aa4cB1Zd3GeqPwvHr,但在Android 5.0中。 - Borja
@Arun Salaria:你的代码不正确,它会显示意图选择器(如果你已经安装了更多的ACTION_CALL应用程序,比如Skype、Viber等)。发帖者想要直接在默认的电话拨号器上拨打电话。 - Zoli

0
这意味着你正在尝试调用com.android.phone,但它不存在。没有奇迹。它不会起作用。要么包名不同,要么你正在使用缺少东西的半后端模拟器之类的东西。更不用说你必须始终在startActivity()周围加上try/catch,因为没有保证它会成功(特别是当针对外部包时)。

com.android.phone应该存在,因为它是一个真实的设备,并且它是默认的电话应用程序。在安装有Android 4.4的Nexus 5中,它可以正常工作。但在同样安装有Android 5的Nexus 5中,它无法正常工作。我想知道原因。 - Borja
你确定吗?看起来你是在猜测而不是检查。 - Marcin Orlowski
手机必须拥有电话应用程序。这不是魔法或猜测。 - Borja
哎呀,它的包ID必须是com.android.phone? - Marcin Orlowski
在Android 4.4中是这样的。在Android 5.0中我不知道。 - Borja
显示剩余2条评论

-2

这个对我在Android 4.4上可行:

    Intent intent = new Intent(Intent.ACTION_DIAL);
    intent.setPackage("com.android.dialer");
    intent.setData(Uri.parse("tel:1111111111"));
    startActivity(intent); 

如果使用Eclipse,请打开系统拨号应用程序并在DDMS中检查拨号器包的名称;在我的情况下是“com.android.dialer”。

1
用户所要求的在安卓4.4上也适用于他,但他需要修改以适应安卓5.0。此外,您没有将电话号码添加到您的数据中。 - CodeMonkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接