2012-12-18 39 views
8

Tôi đã cố đặt chế độ trực tuyến nhưng chế độ này không hoạt động thông qua Bảng phân công. Tôi chạy mã này và kiểm tra máy chủ localhost của tôi, chế độ vẫn còn "có sẵn" và không "Không làm phiền".Không thể thay đổi trạng thái hiện diện của người dùng của tôi bằng 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); 

Trả lời

19

Vì bạn không gửi gói Hiện diện tới máy chủ. Sau khi bạn đã lắp ráp gói Presence của mình, bạn cần gửi nó. Ví dụ:

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

Xem thêm: Smack - Getting Started; section "Reading and Writing Packets"

+0

Sau khi thiết lập nó, tôi không thể có được nó ra. Đó chính là vấn đề. Tôi mong đợi một hàm như thế này: connection.getStatus(), connection.getMode(); – Emerald214

+1

Cảm ơn bạn đã làm việc trong lĩnh vực này :) –

+0

hi @Flow ..Tôi đã thử tính năng này..Nhưng nó đang hiển thị trạng thái của người dùng trực tuyến duy nhất..không cho người dùng ngoại tuyến? Làm cách nào để có trạng thái của tất cả người dùng ngoại tuyến, trực tuyến? – BMM

Các vấn đề liên quan