Я пытаюсь запрограммировать приложение Android, которое отправляет обновление с телефона на сервер сетевых провайдеров с использованием USSD. Проблема в том, что для получения данных с сетевого сервера на мой веб-сервер мне нужны данные в кодированной в базе64 Datagram. Формат, который я пытаюсь отправить этим данным, это: * #, где датаграмма состоит из Это позволяет мне отправлять 2 дейтаграммы в одном пакете USSD.Отправить Base64 закодированные данные по USSD с Android
Это то, что я до сих пор
private void sendUSSDupdate(Integer data1, Integer data2){
char[] data1CharArray = data1.toString().toCharArray();
char[] data2CharArray = data2.toString().toCharArray();
Integer data1Length = data1CharArray.length * 2;
Integer data2Length = data2CharArray.length * 2;
char[] dataDatagram = new String(PID.toString() + data1Length.toString() + new String(data1CharArray)).toCharArray();
char[] dataDatagram = new String(PID.toString() + data2Length.toString() + new String(data2CharArray)).toCharArray();
String ussdAddress = "*126*5*";
byte[] data1ByteArray = new byte[data1Datagram.length * 2];
ByteBuffer.wrap(data1ByteArray).asCharBuffer().put(data1Datagram);
byte[] data2ByteArray = new byte[data2Datagram.length * 2];
ByteBuffer.wrap(data2ByteArray).asCharBuffer().put(data2Datagram);
byte[] base64data1Datagram = Base64.encode(dataByteArray, Base64.NO_PADDING);
byte[] base64data2Datagram = Base64.encode(dataByteArray, Base64.NO_PADDING);
byte[] dat = new byte[base64data1Datagram.length + base64data2Datagram.length];
int i = 0;
while(i < base64data1Datagram.length - 1){
dat[i] = base64data1Datagram[i];
i++;
}
int j = 0;
while(i < dat.length - 1){
dat[i] = base64data2Datagram[j];
i++;
}
try{
Intent ussdIntent = new Intent(Intent.ACTION_CALL);
ussdIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
ussdIntent.setFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION);
ussdIntent.setFlags(Intent.FLAG_FROM_BACKGROUND);
Uri uri = Uri.fromParts("tel", ussd + dat, encodedHash);
System.err.println(uri);
ussdIntent.setData(uri);
act.startActivity(ussdIntent);
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
}
И ваш вопрос ...? – CommonsWare