android - 通过xmpp在android中传输文件?

标签 android xmpp smack

我只是想通过 xmpp 传输文件。我正在使用 asmack lib。我在下面遇到异常。

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)

任何人都可以帮助我如何使用 asmack 在 android 中进行文件传输?

最佳答案

你必须做一个虚拟的服务发现管理器。

new ServiceDiscoveryManager(your XMPP connection);

现在这条线不会造成任何问题。

mFileTransferManager = new FileTransferManager(your XMPP connection);

首先,您必须将 smack.properties 复制到您的 android 模拟器。 您可以在原始 SMACK API 站点获取 smack.properties

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

将 smack.properties 插入“/data/”文件夹。

修改ProviderManager.java(在org/jivesoftware/smack/provider中)的initialize()方法如下。

找到以下行。

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

替换为

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

希望对你有帮助

关于android - 通过xmpp在android中传输文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6339648/

相关文章:

timeout - GCDAsyncSocket ReadTimeoutError 问题

android - aSmack 4.0.* XMPPTCPConnection 无法连接到 OpenFire 和 Ejabbered (SmackException$NoResponseException)

java - 除聊天文本外的 Smack 消息客户端

android - 即使应用程序关闭,全局变量仍然存在

java - 如何使用日历获取当前时间?

xmpp - 如何在Android上本地保存聊天记录?

c++ - 用于在 C++ 或 Delphi 中开发 XMPP 服务器的库?

java - Smack 4.1 重新连接问题

java - dev.android.com 的 JetBoy 示例说明?

android - Android 版 OpenCV : Convert Camera preview from YUV to RGB with Imgproc. cvtColor