Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.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
继续USSD请求(Android)_Android_Ussd - Fatal编程技术网

继续USSD请求(Android)

继续USSD请求(Android),android,ussd,Android,Ussd,众所周知,菜单驱动的USSD应用程序总是按照预先定义的顺序获取参数。例如 用户发送111斯里兰卡,并通过返回其子菜单号获得一个包含约12个子项的菜单供选择。然后,它可能会要求从一组子菜单中选择另一个。发送号码等,发送pin,发送电话号码以重新加载(如果正在重新加载),然后发送yes1 No 2以确认,然后发送99以完成USSD事件。 我已经成功地使用诺基亚ASHA 501的蓝牙输出com端口,从VB.NET向手机发送连续信号,如下所示 strCommand = "AT+CUSD=

众所周知,菜单驱动的USSD应用程序总是按照预先定义的顺序获取参数。例如 用户发送111斯里兰卡,并通过返回其子菜单号获得一个包含约12个子项的菜单供选择。然后,它可能会要求从一组子菜单中选择另一个。发送号码等,发送pin,发送电话号码以重新加载(如果正在重新加载),然后发送yes1 No 2以确认,然后发送99以完成USSD事件。 我已经成功地使用诺基亚ASHA 501的蓝牙输出com端口,从VB.NET向手机发送连续信号,如下所示

        strCommand = "AT+CUSD=1," & Chr(34) & "#111#" & Chr(34) & ",15" & vbCrLf
        comport.Write(strCommand)
        Thread.Sleep(5000)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button = (Button) findViewById(R.id.button1);

    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {
            String encodedHash = Uri.encode("#");
            call(encodedHash + "111" + encodedHash);
        }
    });
}

protected void call(String phoneNumber) {
    try {
        startActivityForResult(
                new Intent("android.intent.action.CALL", Uri.parse("tel:"
                        + phoneNumber)), 1);
    } catch (Exception e) {
        view.append("\n Here \n " + "\n" + e.toString() + " hi");//
    }
}
这将打开USSD菜单。如果有任何返回的错误,例如com不允许错误拨号USSD,则com port.DataReceived的DataReceivedHandler可以为您提供。 接下来我将发送的是响应字符串包含OK

    strCommand = "AT+CUSD=1," & Chr(34) & "1" & Chr(34) & ",15" & vbCrLf
    comport.Write(strCommand)
    Thread.Sleep(5000)
再次检查OK等。这是有效的,我想从Android上做这件事。 成功获取第一个菜单,如下所示

        strCommand = "AT+CUSD=1," & Chr(34) & "#111#" & Chr(34) & ",15" & vbCrLf
        comport.Write(strCommand)
        Thread.Sleep(5000)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button = (Button) findViewById(R.id.button1);

    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {
            String encodedHash = Uri.encode("#");
            call(encodedHash + "111" + encodedHash);
        }
    });
}

protected void call(String phoneNumber) {
    try {
        startActivityForResult(
                new Intent("android.intent.action.CALL", Uri.parse("tel:"
                        + phoneNumber)), 1);
    } catch (Exception e) {
        view.append("\n Here \n " + "\n" + e.toString() + " hi");//
    }
}
到目前为止还不错。 我不需要阅读USSD的回复。只想将下一个命令(如1)发送到同一个USSD线程,给出4/5秒的睡眠时间。 如果我使用相同的方法,它会出现另一个线程,调用数字1

String encodedHash = Uri.encode("#");
            call(encodedHash + "1" + encodedHash);
startActivityForResult(
                new Intent("android.intent.action.CALL", Uri.parse("tel:"
                        + phoneNumber)), 1);
从这么多的文档中尝试了很多东西,却没有任何线索。
提前谢谢。上面所有这些代码都是从stackoverflow这样的好地方采集的,它们正在工作。

我自己得到了答案。替换了名为encodedHash+111+encodedHash的行;用这个。CallEncodeHash+121*1*1*1*99+encodedHash;您必须根据您的供应商了解USSD的每个功能。我通过每个函数得到了这个结果,我在这里给出的一个函数是将彩票结果作为短信发送到手机上