2012-12-18 1 views
8

온라인 모드를 설정하려고했지만 Roster를 통해 작동하지 않습니다. 이 코드를 실행하고 내 localhost 서버를 확인하십시오. 모드는 여전히 "사용 가능"이며 "방해하지 마십시오"는 아닙니다.Smack으로 내 사용자의 현재 상태를 변경할 수 없습니다.

final Connection connection = new XMPPConnection("xxx.xxx.x.xx"); 

connection.connect(); 
connection.login("[email protected]", "123456"); 

final Roster roster = connection.getRoster();   
Presence p = roster.getPresence("[email protected]"); 
p.setPriority(128); 
p.setMode(Mode.dnd); 

답변

19

프레즌스 패킷을 서버로 보내지 않기 때문에. Presence 패킷을 모은 후에는 그것을 보내야합니다. 예를 들어 :

Presence p = new Presence(available, "I am busy", 42, Mode.dnd); 
connection.sendStanza(p); 

은 참조 : Smack - Getting Started; section "Reading and Writing Packets"

+0

을 설정 한 후, 나는 그것을 밖으로 얻을 수 없습니다. 그것이 문제이다. 나는 다음과 같은 함수를 기대한다 : connection.getStatus(), connection.getMode(); – Emerald214

+1

감사합니다. 감사합니다. –

+0

안녕하세요. @Flow .. 나는 이것을 시도했다. 그러나 온라인 사용자 만의 상태를 보여주고있다. 오프라인 사용자가 아닌 모든 온라인 사용자의 상태를 얻는 방법? – BMM