使用Intent.ACTION_CALL拨打电话号码中的#停止

时间:2011-08-24 10:50:57

标签: android

我尝试拨打电话号码03012345,1234,#31#,98765 (用FRITZ!Box打电话)

“03012345”是FRITZ的电话号码!Box,“,”是拨号暂停,“#31#”是向被叫方显示我自己的电话号码的前缀,“98765”是被叫方的电话号码

String phonenumber = "03012345,1234,#31#,98765";
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phonenumber)));

在我的智能手机上,一切正常,但有些用户向我报告,他们的智能手机在第一次#后停止拨号。但是当他们从联系人拨打电话时,它就能正常工作。

也许,Uri.parse拆分电话号码?或者还有其他方式拨打这样的电话号码吗?

2 个答案:

答案 0 :(得分:4)

以下是解决方案:

String phonenumber = "03012345,1234,#31#,98765"; // , = pauses
encodedPhonenumber = URLEncoder.encode(phonenumber, "UTF-8");
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + encodedPhonenumber)));

您只需对电话号码进行编码即可。

答案 1 :(得分:0)

答案真的很晚,但另一种可以做到的方法是使用Uri.Builder。使用encodedPath()假设您传递的字符串已经过编码,因此会按原样添加到Uri

final String phonenumber = "03012345,1234,#31#,98765";
final Uri uri = new Uri.Builder().scheme("tel").encodedPath(phonenumber).build();
startActivity(new Intent(Intent.ACTION_CALL, uri));