首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android未收到USSD代码响应

Android未收到USSD代码响应
EN

Stack Overflow用户
提问于 2019-08-26 17:52:22
回答 1查看 389关注 0票数 1

我想拨号并得到拨打的USSD代码响应。这是我的代码。但是当我运行它时,它没有在toast上显示任何响应。

代码语言:javascript
运行
复制
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码。但是土司什么也没显示。有人能帮我找到解决方案吗?或者有没有其他方法可以在我的应用程序中获得拨打的USSD响应?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-26 20:54:36

我自己找到了答案。我用这个Api解决了这个问题。https://github.com/romellfudi/VoIpUSSD

下面是我的代码:

代码语言:javascript
运行
复制
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
                            }
                        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57655570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档