Filetransfer en android a través de xmpp?

Sólo estoy tratando de transferir un archivo a través de xmpp.I estoy usando asmack lib.I estoy recibiendo la excepción a continuación.

E/AndroidRuntime( 332): FATAL EXCEPTION: main E/AndroidRuntime( 332): java.lang.NullPointerException E/AndroidRuntime( 332): at org.jivesoftware.smackx.bytestreams.socks5.Socks5BytestreamManager.enableService(Socks5BytestreamManager.java:704) E/AndroidRuntime( 332): at org.jivesoftware.smackx.bytestreams.socks5.Socks5BytestreamManager.activate(Socks5BytestreamManager.java:696) E/AndroidRuntime( 332): at org.jivesoftware.smackx.bytestreams.socks5.Socks5BytestreamManager.getBytestreamManager(Socks5BytestreamManager.java:1 80) E/AndroidRuntime( 332): at org.jivesoftware.smackx.filetransfer.Socks5TransferNegotiator.<init>(Socks5TransferNegotiator.java:50) E/AndroidRuntime( 332): at org.jivesoftware.smackx.filetransfer.FileTransferNegotiator.<init>(FileTransferNegotiator.java:217) E/AndroidRuntime( 332): at org.jivesoftware.smackx.filetransfer.FileTransferNegotiator.getInstanceFor(FileTransferNegotiator.java:102) E/AndroidRuntime( 332): at org.jivesoftware.smackx.filetransfer.FileTransferManager.<init>(FileTransferManager.java:63) E/AndroidRuntime( 332): at org.apache.android.xmpp.XMPPClient.fileTransfer(XMPPClient.java:143) E/AndroidRuntime( 332): at org.apache.android.xmpp.XMPPClient.onClick(XMPPClient.java:200) E/AndroidRuntime( 332): at android.view.View.performClick(View.java:2408) E/AndroidRuntime( 332): at android.view.View$PerformClick.run(View.java:8816) E/AndroidRuntime( 332): at android.os.Handler.handleCallback(Handler.java:587) E/AndroidRuntime( 332): at android.os.Handler.dispatchMessage(Handler.java:92) E/AndroidRuntime( 332): at android.os.Looper.loop(Looper.java:123) E/AndroidRuntime( 332): at android.app.ActivityThread.main(ActivityThread.java:4627) E/AndroidRuntime( 332): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime( 332): at java.lang.reflect.Method.invoke(Method.java:521) E/AndroidRuntime( 332): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) E/AndroidRuntime( 332): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 

¿Alguien puede ayudarme cómo puedo hacer una transferencia de archivos en android usando asmack?

Usted tiene que hacer un gestor de descubrimiento de servicio ficticio.

 new ServiceDiscoveryManager(your XMPP connection); 

Ahora esta línea no causa ningún problema.

 mFileTransferManager = new FileTransferManager(your XMPP connection); 

Primero, tienes que copiar un smack.properties a tu emulador android. Puede obtener smack.properties en el sitio original de la API SMACK.

http://www.igniterealtime.org/downloads/source.jsp

Empuje smack.properties en la carpeta "/ data /".

Modifique el método initialize() de ProviderManager.java (está en org/jivesoftware/smack/provider ) como sigue.

Busque la línea siguiente.

  Enumeration providerEnum = classLoader.getResources( "/META-INF/smack.providers"); 

Sustitúyalo por

  Enumeration providerEnum = classLoader.getResources( "/data/smack.providers"); 

Espero que esto ayude

Utilice éste para la transferencia de archivos en asmack. He hecho esto y lo he comprobado. Su trabajo perfecto.

Para recibir un archivo utilice este método

 public void ReceiveFile() { Thread thread = new Thread() { public void run() { ServiceDiscoveryManager sdm = ServiceDiscoveryManager .getInstanceFor(connection); if (sdm == null) sdm = new ServiceDiscoveryManager(connection); sdm.addFeature("http://jabber.org/protocol/disco#info"); sdm.addFeature("jabber:iq:privacy"); // Create the file transfer manager final FileTransferManager managerListner = new FileTransferManager( connection); FileTransferNegotiator .setServiceEnabled(connection, true); Log.i("File transfere manager", "created"); // Create the listener managerListner .addFileTransferListener(new FileTransferListener() { public void fileTransferRequest( final FileTransferRequest request) { Log.i("Recieve File", "new file transfere request new file transfere request new file transfere request"); Log.i("file request", "from" + request.getRequestor()); IncomingFileTransfer transfer = request.accept(); Log.i("Recieve File alert dialog", "accepted"); try { transfer.recieveFile(new File("/sdcard/" + request.getFileName())); while (!transfer.isDone() || (transfer.getProgress() < 1)) { Thread.sleep(1000); Log.i("Recieve File alert dialog", "still receiving : " + (transfer.getProgress()) + " status " + transfer.getStatus()); if (transfer.getStatus().equals(Status.error)) { // Log.i("Error file", // transfer.getError().getMessage()); Log.i("Recieve File alert dialog", "cancelling still receiving : " + (transfer.getProgress()) + " status " + transfer.getStatus()); transfer.cancel(); break; } } } catch (XMPPException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }); } }; thread.start(); } 

Solo pregúntame si tiene alguna pregunta sobre la transferencia de archivos en xmpp usando asmack lib.

Gracias

  • Cómo implementar XMPP para enviar notificaciones push
  • SASLError utilizando PLAIN: no autorizado
  • Cómo enviar el dispositivo a la notificación del dispositivo usando FCM sin usar XMPP o cualquier otro script.
  • ¿Cómo implementar el estado de lectura de mensajes como whatsapp blue tick mark?
  • InstanceID y Regid GCM
  • Analizar caracteres ASCII con Erlang
  • Cómo saber Escribir Estado en XMPP openfire usando Smack
  • Cómo obtener la misma conexión xmpp de una actividad a otra?
  • No se puede conectar al servidor Openfire (mediante smack api)
  • No se puede conectar el cliente de Android con el servidor XMPP local
  • No se puede conectar en el servidor xmpp en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.