0

我正在尝试从我的应用程序中实现调用功能。当某些条件为真时,我通过在我的号码前添加#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。提前致谢。

4

3 回答 3

2

这不是一个真正的答案,但我的代表还不够高,无法发表评论。你有没有机会将 phnumber 声明为 int 或任何东西?也许#'s搞砸了?

如果这不起作用,您是否尝试过使用ACTION_DIALandroid 开发者网站在此处提供了有关它们之间差异的更多信息。希望能帮助到你。

于 2012-10-25T09:52:14.627 回答
1

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

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

你可能想看看这个。添加#31#时无法拨打电话

于 2012-10-25T11:09:54.730 回答
1

您需要对 进行编码,'#'因为它的行为类似于拨号命令,然后如果您将操作调用意图数据设置为以 开头的数字'#',它将改为调用空白号码,尝试拨打8488449#848 之类的号码,如果未编码将拨打8488449这就是为什么您需要至少对'#'符号进行编码,Uri.encode("#") 例如拨打 8488449#848,我将执行以下操作: startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:8488449"+Uri.encode("#")+"848"));

于 2016-08-12T23:45:38.803 回答