Служба Android Sinch не поддерживает специальные символы в CallId

Я использую службу вызовов sinch для вызова приложения, он отлично работает, когда я использую int и строку в качестве callId в onSinchServiceConnected(). Но если имя пользователя содержит специальные символы, вызов не выполняется.

AppConstant.CALL_ID = mCallId = getIntent().getStringExtra(
            SinchService.CALL_ID);//Contain Special characters.

//And in onServiceConnected() use

    Call call = getSinchServiceInterface().getCall(mCallId);

person Peter    schedule 07.10.2015    source источник


Ответы (2)


Я не могу понять ваш вопрос, но я думаю, что это решается так. Вы можете сделать это, используя кодирование и декодирование mCallId. при размещении звонка кодировать callId

public String Encode(String str) {
    byte[] data = null;
    try {
        data = str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String base64 = Base64.encodeToString(data, Base64.DEFAULT);
    return base64;
}

и Использовать идентификатор вызова как

Call call = getSinchServiceInterface().callUser(Encode(name));

и при приеме вызова

public String decode(String str) {
    byte[] data = Base64.decode(str, Base64.DEFAULT);
    String text = null;
    try {
        text = new String(data, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return text;
}

и использовать его

String userEncoded = call.getRemoteUserId();
String decodedUserName = decode(userEncoded);
person DDN    schedule 07.10.2015

Как правило, при звонках с помощью Sinch телефонные номера должны указываться в соответствии с рекомендацией по форматированию номеров E.164 ([http://en.wikipedia.org/wiki/E.164][1]) и должны иметь префикс «+».

Ссылка: https://www.sinch.com/docs/voice/android/#calling

person KishuDroid    schedule 07.10.2015