我只是想通过 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.properties
位于原始 SMACK API 站点。
http://www.igniterealtime.org/downloads/source.jsp http://www.igniterealtime.org/downloads/source.jsp
将 smack.properties 推入“/data/”文件夹。
Modify initialize()
的方法ProviderManager.java
(在里面org/jivesoftware/smack/provider
) 如下。
找到以下行。
Enumeration providerEnum = classLoader.getResources(
"/META-INF/smack.providers");
将其替换为
Enumeration providerEnum = classLoader.getResources(
"/data/smack.providers");
希望这有帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)