【问题标题】:initiate a phone call on android with special character #用特殊字符在android上拨打电话#
【发布时间】:2011-01-27 11:34:09
【问题描述】:

我使用以下代码从 android 应用程序中发起呼叫:

intent.setData(Uri.parse("tel:+12345 #123"));
startActivity(intent);

当它开始调用时,它会忽略以 # 开头的所有内容。

我读过一些关于修改 SpecialCharSequenceMgr.java 文件的内容,但是我在任何地方都找不到这个,而且老实说,我不知道到底要做什么。解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: android phone-call


    【解决方案1】:

    我认为问题在于 # 符号在 URI 中具有特殊含义,因此您必须使用 Uri.encode() 方法对其进行编码,如下所示:

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

    【讨论】:

    • 感谢您的快速回复。这会导致电话屏幕打开并显示正确的号码(包括特殊字符),但不再开始通话。必须手动按下绿色电话按钮。有没有一种方法可以在不手动按下按钮的情况下启动呼叫?非常感谢...
    • 当然,您只需要使用 ACTION_CALL 操作而不是 ACTION_DIAL,并且要使用它,您需要清单中的 android.permission.CALL_PHONE 权限。
    【解决方案2】:

    我相信乔恩在你的问题上并不完全正确,但这个想法还不错,虽然...... 您需要使用特殊字符映射来启动井号键:

    Intent intcall = new Intent(Intent.ACTION_CALL);
    intcall.setData(Uri.parse("tel:5555" + "%23"+"additional number"));
    startActivity(intcall);
    

    【讨论】:

      【解决方案3】:

      意图输出 = new Intent();

      out.setAction(Intent.ACTION_DIAL);

      out.setData(Uri.parse("tel:" + Uri.encode("+12345#123")));

      startActivity(out);

      【讨论】:

        【解决方案4】:

        就这样做吧。它对我有用。

        Uri.parse(Uri.encode("your string value"));
        

        【讨论】:

          【解决方案5】:

          我发现了这个,它对我来说很好用 > unity 2020.3

          'Application.OpenURL("tel://Number");'

          【讨论】:

          • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-10
          • 2023-03-21
          • 2017-12-21
          相关资源
          最近更新 更多