Android App Development调用不会调用完整的USSD代码

时间:2014-12-03 01:26:13

标签: android adt ussd

我的应用程序目前不会产生最终的#34;#"在AT& T的用于检查数据使用的USSD代码的末尾(应该是* 3282#)

这是我的代码:

public void callATT(View view){
        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "*3282#"));
        startActivity(intent);
    }

每次调用它时只需调用" * 3282"

请帮助我,

提前致谢

-Tucker

4 个答案:

答案 0 :(得分:1)

试试这个,我没有测试它,但应该可以工作。

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

答案 1 :(得分:1)

    public 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(USSDCodeHere));
startActivity(callIntent);

答案 2 :(得分:0)

只需使用此方法......

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

答案 3 :(得分:-1)

尝试这样的事情。告诉我它是否有效

 String phone = "*3282#";
 Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", phone, null));
 startActivity(intent);