У меня среда программирования rad studio Delphi 10.4.2. Собственно ищу совета как отправить и получить ответ на запрос USSD.
Нашел в интернете единственный пример более или менее который похож на правду.
Привел его к виду нормальному виду, но не хватает знаний как передать функцию CallBack.
procedure TForm7.Button6Click(Sender: TObject);
var
Temp:Jstring;
ResponceCallBack: JTelephonyManager_UssdResponseCallback;
handler: JHandler;
begin
TM :=TJTelephonyManager.Create;
handler := TJHandler.Create;
ResponceCallBack := TJTelephonyManager_UssdResponseCallback.Wrap(
TAndroidHelper.Context.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE));
TM.sendUssdRequest(StringToJString('*100#'), ResponceCallBack,handler);
end;
На java делается вот так. Не знаю как этот код переделать в delphi.
TelephonyManager = telephonyManager(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
Handler handler = new Handler();
TelephonyManager.UssdResponseCallback callback = new TelephonyManager.UssdResponseCallback() {
@Override
public void onReceiveUssdResponse(TelephonyManager telephonyManager, String request, CharSequence response) {
super.onReceiveUssdResponse(telephonyManager, request, response);
Log.e("ussd",response.toString());
}
@Override
public void onReceiveUssdResponseFailed(TelephonyManager telephonyManager, String request, int failureCode) {
super.onReceiveUssdResponseFailed(telephonyManager, request, failureCode);
Log.e("ussd","failed with code " + Integer.toString(failureCode));
}
};
try {
Log.e("ussd","trying to send ussd request");
telephonyManager.sendUssdRequest("*123#",
callback,
handler);
}catch (Exception e){
String msg= e.getMessage();
Log.e("DEBUG",e.toString());
e.printStackTrace();
}