Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android USSD UssdResponseCallback始终失败_Android_Telephonymanager_Ussd_Android 8.0 Oreo - Fatal编程技术网

Android USSD UssdResponseCallback始终失败

Android USSD UssdResponseCallback始终失败,android,telephonymanager,ussd,android-8.0-oreo,Android,Telephonymanager,Ussd,Android 8.0 Oreo,我尝试使用并捕获USSD请求。 我的代码: 但每次我收到“USSD_RETURN_FAILURE”。有没有办法在emulator上测试USSD?或者我的代码中有bug 请告诉我你找到了解决这个问题的方法。。。我面临着同样的问题,不是在emulator上(没有在那里尝试),而是在我的智能手机上……Android oreo 8.1目前还没有解决方案。我打开这期杂志,买了一部安卓8的新手机……看看图片和第10次回复。我发现,即使我们得到了USSD\u RETURN\u FAILURE,请求实际上仍然有

我尝试使用并捕获USSD请求。 我的代码:


但每次我收到“USSD_RETURN_FAILURE”。有没有办法在emulator上测试USSD?或者我的代码中有bug

请告诉我你找到了解决这个问题的方法。。。我面临着同样的问题,不是在emulator上(没有在那里尝试),而是在我的智能手机上……Android oreo 8.1目前还没有解决方案。我打开这期杂志,买了一部安卓8的新手机……看看图片和第10次回复。我发现,即使我们得到了
USSD\u RETURN\u FAILURE
,请求实际上仍然有效,但来自网络的结果并不在
onReceiveUssdResponse
中,而是在一个名为
onReceiveResult
的被覆盖方法中。。。。如果你想办法绕过这个,让我知道。。。问题可能与
sendusdrequest
无法解析提供给它的ussd字符串有关。问题已在此处解决。我相信您提供的USSD代码是一个多会话USSD的开始。例如,选择1作为平衡或选择2连接数据。。。。我将USSD请求更改为不会触发多会话USSD的代码。然后一切都如期进行。。。
sendusdrequest
响应处理程序不知道如何处理多会话USSD请求,因此它只处理
USSD\u失败\u请求
它在单会话USSD中工作正常,在多会话USSD中唯一的问题是按1键平衡,按2键互联网数据等
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, 0);

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
                Handler handler = new Handler();

                TelephonyManager.UssdResponseCallback responseCallback = new TelephonyManager.UssdResponseCallback() {
                    @Override
                    public void onReceiveUssdResponse(TelephonyManager telephonyManager, String request, CharSequence response) {
                        super.onReceiveUssdResponse(telephonyManager, request, response);

                        Toast.makeText(MainActivity.this, response.toString(), Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onReceiveUssdResponseFailed(TelephonyManager telephonyManager, String request, int failureCode) {
                        super.onReceiveUssdResponseFailed(telephonyManager, request, failureCode);

                        Toast.makeText(MainActivity.this, String.valueOf(failureCode), Toast.LENGTH_SHORT).show();
                    }
                };

                telephonyManager.sendUssdRequest("*123#", responseCallback, handler);
            }
        });
    }