Soy nuevo en el uso de la biblioteca smack y hago una aplicación de chat. He hecho hasta cierto punto y en este paso quiero hacer dos preguntas.Android AGREGAR AMIGO usando Smack
cuando agrego un amigo del amigo se añadió en mi lista, pero no hay ninguna comunicación remitida a la amiga a la que he añadido, ¿Cómo lograr el mismo. He agregado el código a continuación.
Lo segundo que quiero preguntar es que cómo puedo verificar si el usuario que voy a agregar es parte o miembro de la aplicación o no (significa que está en el servidor o no). Para que el usuario que no está registrado en la aplicación no se agregue a la lista de amigos.
Este es el código
public static boolean addFriend(String jid) {
String nickname = null;
nickname = StringUtils.parseBareAddress(jid);
RosterEntry entry4 = roster.getEntry("samsad");
if (!roster.contains(jid)) {
try {
Presence subscribe = new Presence(Presence.Type.subscribe);
subscribe.setTo(jid);
connection.sendPacket(subscribe);
roster.createEntry(jid, nickname, null);
// Send a roster entry (any) to user2
RosterExchangeManager REM = new RosterExchangeManager(connection);
REM.send(entry4, jid);
return true;
} catch (XMPPException e) {
System.err.println("Error in adding friend");
return false;
}
} else {
return false;
}
}
gerente Lista Exchange que se ejecuta en el servicio en segundo plano
/**Remotr Exchange Manager*/
RosterExchangeManager rem = new RosterExchangeManager(connection);
// Create a RosterExchangeListener that will iterate over the received roster entries
RosterExchangeListener rosterExchangeListener = new RosterExchangeListener() {
public void entriesReceived(String from, Iterator remoteRosterEntries) {
notification("Receive==4");
while (remoteRosterEntries.hasNext()) {
try {
// Get the received entry
RemoteRosterEntry remoteRosterEntry = (RemoteRosterEntry) remoteRosterEntries.next();
// Display the remote entry on the console
System.out.println(remoteRosterEntry);
// Add the entry to the user2's roster
roster.createEntry(
remoteRosterEntry.getUser(),
remoteRosterEntry.getName(),
remoteRosterEntry.getGroupArrayNames());
notification("Receive==1");
}
catch (XMPPException e) {
e.printStackTrace();
}
}
}
};
rem.addRosterListener(rosterExchangeListener);
}
else{
showToast("Connection lost-",0);
}
}
@Trickster por favor responde ahora –