【问题标题】:Make USSD call in android在android中进行USSD调用
【发布时间】:2019-09-11 21:44:08
【问题描述】:

要检查余额,我必须先拨打电话*xxx#,然后我会收到一个回复​​,其中包含多个选项可供选择,在我输入特定数字后,我会得到余额。

我可以在我的 android 应用程序中使用什么代码?

拨打 *xxx*x# 出现错误。

下面是我的代码,它适用于 *xxx# 调用:

String encodedHash = Uri.encode("#");
String ussd = "*" + encodedHash + lCallNum + encodedHash;
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussd)));

【问题讨论】:

  • stackoverflow.com/questions/11157828/… 的可能重复项检查此 Stack Overflow 问题。
  • 这不是上述问题的可能重复项。我想知道上述场景中 USSD 代码的格式是什么可供选择的选项,例如输入 1 表示余额 2 表示某事等等..
  • 发送 USSD 代码与拨打号码不同。你有用于 USSD 的 Android 界面吗?在回答这个问题时,很明显,截至 2012 年 11 月,没有足够的 USSD 接口。现在这种情况有改变吗?
  • 看来USSD问题还没有解决。
  • USSD 消息不是标准的,因此消息本身的格式取决于操作员或 USSD 用户定义的内容。

标签: android ussd


【解决方案1】:

这对我有用:

private Uri ussdToCallableUri(String ussd) {

    String uriString = "";

    if(!ussd.startsWith("tel:"))
        uriString += "tel:";

    for(char c : ussd.toCharArray()) {

        if(c == '#')
            uriString += Uri.encode("#");
        else
            uriString += c;
    }

    return Uri.parse(uriString);
}

然后在工作代码中:

Intent callIntent = new Intent(Intent.ACTION_CALL, ussdToCallableUri(yourUSSDCodeHere));
startActivity(callIntent);

【讨论】:

    【解决方案2】:

    别忘了添加权限它会解决Skype问题:P

    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
    

    【讨论】:

      【解决方案3】:
      String ussd = "*XXX*X" + Uri.encode("#");
      startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussd)));
      

      这对我来说很完美。只需放置第一束,然后编码#,使其具有完整的*XXX*X#。这肯定会有所帮助

      【讨论】:

      • 你能得到手机的余额吗,你能帮我一些链接和代码sn-ps @AndroGeek
      【解决方案4】:

      要记住的重要事项:

      如果您的目标是 Android Marshmallow (6.0) 或更高版本,那么您需要在运行时请求 Manifest.permission.CALL_PHONE 权限

      【讨论】:

        【解决方案5】:

        试试这个,我没有测试过,但应该可以。

        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + Uri.encode("*3282#")));
        startActivity(intent);
        

        【讨论】:

        • 您好,上面的代码可以正常工作,但如果代码是*#XXX#,那么它就不能正常工作。有没有办法调用这种代码?
        【解决方案6】:

        您可以使用此代码。它对我有用:

        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse(Uri.parse("tel:" + "*947") + Uri.encode("#")));
        startActivity(intent);
        

        【讨论】:

          【解决方案7】:

          使用此代码,它可以工作

          Intent callIntent = new Intent(Intent.ACTION_CALL);
          String ussdCode = "*" + 2 + Uri.encode("#");
          callIntent.setData(Uri.parse("tel:" +ussdCode));
          
          if (ActivityCompat.checkSelfPermission(MainActivity.this,
                              Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                          return;
                      }
          startActivity(callIntent);
          

          在 Manifest 文件中也添加这一行

          <uses-permission android:name="android.permission.CALL_PHONE" />
          

          【讨论】:

            猜你喜欢
            • 2018-12-04
            • 2020-09-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多