发送USSD代码Android

4
我正在尝试通过手机发送USSD代码,所以我使用了一个意图(Intent),正如许多人建议的那样发送代码。不幸的是,每次我发送代码时,它都会发送相同的号码*4355696753。
我用来发送USSD的代码是:
sendCode.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String cUssd = ussdCodeEdTxt.getText().toString();
            String cToSend = "tel:*" + cUssd + Uri.encode("#");
            startActivityForResult(new Intent("android.intent.action.CALL",
                       Uri.parse(cToSend)), 1);

        }
    });

任何想法都将不胜感激。
2个回答

2
我认为您可能需要使用Uri.encode("*")来编码星号。
sendCode.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String cUssd = ussdCodeEdTxt.getText().toString();
            String cToSend = "tel:" + Uri.encode("*") + cUssd + Uri.encode("#");
            startActivityForResult(new Intent("android.intent.action.CALL",
                       Uri.parse(cToSend)), 1);
        }
    });

2
没有必要调用 startActivityForResult 而不是 startActivity。你可以直接调用 startActivity,因为 USSD 呼叫不会向调用活动返回任何结果。如果你想读取返回文本的内容,请参阅此链接:http://umeshisran4android.blogspot.com/2015/11/how-to-readparse-ussd-messages.html。 - Merhawi Fissehaye
公正的观点 :) 我只是建议“*”可能需要编码。 - formica

0

虽然这是一个旧的帖子,但对于那些遇到相同问题的人,可以尝试使用以下代码:Uri.fromParts("tel", 号码例如 = *222# , "#");


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接