我正在尝试从我的应用程序实现调用工具。当某些条件成立时,我通过在我的号码前添加#31#来隐藏我的来电显示。虽然如果没有添加#31#,呼叫完全没问题,但是当添加#31#时,会弹出空白屏幕,好像正在加载手机应用程序,我的应用程序屏幕会回来。我的代码片段就是这个
String ph = "123456789";
String phNumber;
if (hideCallerId) {
phNumber = "#31#" + ph;
}
else {
phNumber = ph;
}
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+phNumber));
startActivity(intent);
案例1:当phNumber为123456789时,则调用没有问题。
案例2 当phNumber为#31#123456789时,弹出空白屏幕,用户返回我的应用程序界面。
虽然当我使用#31#123456789从我的设备拨号时,呼叫已成功完成。 我错过了什么。任何人都可以帮助我。
链接没有帮助我Link1。 提前谢谢。
答案 0 :(得分:2)
这不是一个真正的答案,但我的代表不够高,无法发表评论。您是否有机会将声明声明为int或其他任何内容?也许#会弄乱它?
如果这不起作用,您是否尝试使用ACTION_DIAL
? android开发者网站有更多关于它们之间差异的信息here。希望它有所帮助。
答案 1 :(得分:1)
您只需对电话号码进行编码即可。
String phonenumber = "03012345,1234,#31#,98765"; // , = pauses
encodedPhonenumber = URLEncoder.encode(phonenumber, "UTF-8");
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + encodedPhonenumber)));
你可能想看一下这个。 Not able to make a call when #31# is added
答案 2 :(得分:0)
您需要对'#'
进行编码,因为 的行为类似于拨号命令 ,然后如果您使用以{开头的数字设置行动呼叫意图数据{1}},它会拨打一个空白号码,尝试拨打 8488449#848 这样的号码,如果没有编码则拨打 {{1 <}> 这就是为什么你需要用'#'
编码至少8488449
符号的原因
例如拨打8488449#848,我将执行以下操作:
'#'