Android ADD FRIEND usando Smack
Soy nuevo en el uso de smack biblioteca y hacer una aplicación de chat. He hecho hasta en gran medida y en este paso quiero hacer dos preguntas.
-
Cuando agrego a un amigo el amigo se agregó en mi lista pero no hay ninguna notificación enviada al AMIGO a quien he agregado, ¿Cómo lograr lo mismo. He añadido el código a continuación.
-
La segunda cosa que quiero preguntar es que cómo puedo comprobar si el usuario que voy a agregar es una parte o miembro de la aplicación o no (lo que significa que está en el servidor o no). Para que el usuario que no está registrado en la aplicación no se debe agregar en la lista de amigos.
Aquí está 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; } }
Director de Intercambio de Intercambio 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); } }
- ¿Cómo mantener una conexión XMPP estable en Android con (a) smack?
- Cómo crear una cuenta de Smack 4.1
- Configuración de configuración predeterminada de Android xmpp MUC
- Cómo habilitar el XEP-0199 en Smack?
- No se puede conectar el cliente de Android con el servidor XMPP local
- File Transfer: mostrar el tamaño del archivo 0KB mientras se transfiere el archivo usando smack en android
- Mantener la conexión XMPP (utilizando asmack) en vivo en Android
- Xmpp + openfire + confirmación del servidor al remitente
1, El problema es que debe registrar un PacketListener para Presence.Type.subscribe
antes de conectarse al servidor. Todo el proceso de agregar y aceptar amigo que respondí aquí
2, Puede utilizar la clase UserSearch para buscar un usuario específico y si el usuario no se encuentra en el servidor, puede suponer que el usuario no está registrado en el servidor.
- ¿Por qué Bitmap.getConfig () devuelve null?
- Cómo iniciar una nueva clase de actividad en el cuadro de diálogo AlertDialog eligiendo el botón Aceptar