我尝试拨打电话号码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
拆分电话号码?或者还有其他方式拨打这样的电话号码吗?
答案 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));