在android中进行USSD调用

And*_*eek 10 android ussd

要先检查余额,我必须拨打电话*xxx#然后我会得到一个有多个选项可供选择的回复,在我输入特定号码后我得到余额.

在我的Android应用程序中,我可以使用哪些代码?

拨打*xxx*x#给我错误.

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

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

小智 18

这对我有用:

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);
}
Run Code Online (Sandbox Code Playgroud)

然后在工作代码中:

Intent callIntent = new Intent(Intent.ACTION_CALL, ussdToCallableUri(yourUSSDCodeHere));
startActivity(callIntent);
Run Code Online (Sandbox Code Playgroud)


smj*_*smj 6

不要忘记添加权限,它将解决skype问题:P

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
Run Code Online (Sandbox Code Playgroud)


Khu*_*zad 6

要记住的重要一点:

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


use*_*871 5

String ussd = "*XXX*X" + Uri.encode("#");
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussd)));
Run Code Online (Sandbox Code Playgroud)

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