为了账号安全,请及时绑定邮箱和手机立即绑定

在 Android 中没有得到 USSD 代码的响应

在 Android 中没有得到 USSD 代码的响应

撒科打诨 2023-06-21 13:14:06
我想拨打并获得拨打的 USSD 代码响应。这是我的代码。但是当我运行时,吐司上没有显示任何响应。private void ussdResponse(String completeCode) {    TelephonyManager manager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);    if (checkSelfPermission(Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED || checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {        ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, requestCode);        ActivityCompat.requestPermissions(MainActivity.this , new String[]{Manifest.permission.READ_PHONE_STATE},requestCode);        return;    }    manager.sendUssdRequest(completeCode, new TelephonyManager.UssdResponseCallback() {        @Override        public void onReceiveUssdResponse(TelephonyManager telephonyManager, String request, CharSequence response) {            super.onReceiveUssdResponse(telephonyManager, request, response);            Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();            Toast.makeText(MainActivity.this, "USSD Result"+response.toString(), Toast.LENGTH_LONG).show();        }        @Override        public void onReceiveUssdResponseFailed(TelephonyManager telephonyManager, String request, int failureCode) {            super.onReceiveUssdResponseFailed(telephonyManager, request, failureCode);            Toast.makeText(MainActivity.this, "Failed", Toast.LENGTH_SHORT).show();            Toast.makeText(MainActivity.this, "USSD Response Failed.", Toast.LENGTH_SHORT).show();        }    }, new Handler());}compleCode包含 USSD 代码。但是 Toast 什么也没显示。任何人都可以找到我的解决方案吗?或者有没有其他方法可以在我的应用程序中获取拨打的 USSD 响应?
查看完整描述

1 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

用这个 Api 来解决这个问题。 

这是代码:

HashMap map = new HashMap<>();

                        map.put("KEY_LOGIN",new HashSet<>(Arrays.asList("espere", "waiting", "loading", "esperando")));

                        map.put("KEY_ERROR",new HashSet<>(Arrays.asList("problema", "problem", "error", "null")));


                        final USSDApi ussdApi = USSDController.getInstance(MainActivity.this);

                        ussdApi.callUSSDInvoke("*786#", map, new USSDController.CallbackInvoke() {

                            @Override

                            public void responseInvoke(String message) {

                                // message has the response string data

                                String dataToSend = "data";// <- send "data" into USSD's input text

                                ussdApi.send(dataToSend,new USSDController.CallbackMessage(){

                                    @Override

                                    public void responseMessage(String message) {

                                        // message has the response string data from USSD

                                        Log.d("message", message);

                                    }

                                });

                            }


                            @Override

                            public void over(String message) {

                                // message has the response string data from USSD or error

                                // response no have input text, NOT SEND ANY DATA

                            }

                        });


查看完整回答
反对 回复 2023-06-21
  • 1 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信