【问题标题】:hash key "#" stripped from ussd code in "tel:" links on html pages从 html 页面上的“tel:”链接中的 ussd 代码中删除的哈希键“#”
【发布时间】:2014-11-11 12:10:24
【问题描述】:

大家好。 我在网页上有一个简单的链接,用户可以在其中拨打 USSD 号码:

<a href="tel:*111*2#" class="phoneCallButtonLink">*CLICK HERE AND CALL *111*2#</a>

这很简单;现在,如果我在桌面浏览器上对其进行测试,它会弹出一个警告,询问我是否要(通过Skype)拨打号码*111*2#,没关系。

使用我的 Android 手机(S Note 3),在测试此页面时,手机(或其他东西)从链接中删除了最后一个“#”(仅最后一个),导致调用 *111*2

有人经历过吗?或者知道如何预防?

【问题讨论】:

  • 尝试用 %23 替换 #。
  • 由于某种原因,最后一个哈希编码被视为 %23
  • 你试过我的回答了吗?
  • 是的,我试过没有运气,我尝试用js直接和以各种方式编码......最后一个哈希被剥离,听起来像是电话自动处理ussd代码的某种预防....

标签: html ussd


【解决方案1】:

Use URL encoding for special character in a URL。例如# 等于%23

这对我有用:

<a ng-href="tel:%23 224">#224</a>

如你所见:

【讨论】:

    【解决方案2】:

    您需要使用Uri.encode("#") 例如String number = "tel:*111*2" + Uri.encode("#");

    【讨论】:

      【解决方案3】:

      试试这个方法,希望能帮助你解决问题。

       webview = (WebView) findViewById(R.id.webview);
       webview.loadData("<a href=\"tel:*111*2#\" class=\"phoneCallButtonLink\">*CLICK HERE AND CALL *111*2#</a>","text/html", "utf-16");
       webview.setWebViewClient(new CustomWebViewClient());
      
       private class CustomWebViewClient extends WebViewClient {
          @Override
          public boolean shouldOverrideUrlLoading(WebView wv, String url) {
          if(url.startsWith("tel:")) {
             Intent intent = new Intent(Intent.ACTION_DIAL);
             intent.setData(Uri.parse(url.replace("#","%23")));
             startActivity(intent);
             return true;
          }
          return false;
         }
       }
      

      【讨论】:

        【解决方案4】:

        您可以使用以下方式在拨号器中显示 USSD

        <a href="tel:*111*2%23" class="phoneCallButtonLink">*CLICK HERE AND CALL *111*2#</a>
        

        【讨论】:

          猜你喜欢
          • 2012-01-13
          • 1970-01-01
          • 1970-01-01
          • 2021-06-18
          • 1970-01-01
          • 1970-01-01
          • 2013-08-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多