2015-06-17 6 views
0

Я создаю приложение с помощью Linphone. Я создаю новый LinphoneChatRoom, используя этот код:Linphone PeerAddress DisplayName не устанавливается

public void createNewChatRoom(String destination, String name) 
{ 
    LinphoneChatRoom[] rooms = core.getChatRooms(); 
    for (LinphoneChatRoom room : rooms) 
    { 
    Log.d("name1: " + room.getPeerAddress().getDisplayName()); 
    } 
    LinphoneChatRoom room = core.getOrCreateChatRoom(destination); 
    if (room != null) 
    { 
    room.getPeerAddress().setDisplayName(name); 
    } 
    rooms = core.getChatRooms(); 
    for (LinphoneChatRoom room2 : rooms) 
    { 
    Log.d("name2: " + room2.getPeerAddress().getDisplayName()); 
    } 
} 

Во время первой итерации на номера (name1 итерации) все имена дисплейных я получаю нулевые. На второй итерации по комнатам (итерация name2), действительно, добавлена ​​новая комната, а массив имеет размер +1, но опять же, все отображаемые имена нулевые, хотя я только что установил его. Почему это происходит?

ответ

0

После поиска какое-то время я обнаружил, что вы получите только displayName, если SIP-адрес, используемый для создания chatRoom, содержит один.

Моя проблема: я не установил displayName при создании chatRoom, но установил его на переменной, которую я получил после ее создания (а не в самой чате).

Вот как это сделать:

LinphoneAddress addr = LinphoneCoreFactory.instance().createLinphoneAddress(destination); 
addr.setDisplayName(name); 
LinphoneChatRoom room = core.getOrCreateChatRoom(addr.asString());