gpt4 book ai didi

java - Android 中未收到 USSD 代码的响应

转载 作者:太空宇宙 更新时间:2023-11-04 09:26:23 24 4
gpt4 key购买 nike

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

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 响应?

最佳答案

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

这是我的代码:

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
}
});

关于java - Android 中未收到 USSD 代码的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57655570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com