android – 无法使用asmack api为Gtalk应用程序获取脱机消息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android – 无法使用asmack api为Gtalk应用程序获取脱机消息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3942字,纯文字阅读大概需要6分钟。
内容图文
![android – 无法使用asmack api为Gtalk应用程序获取脱机消息](/upload/InfoBanner/zyjiaocheng/802/c33ea0dc5fde4886af12b600ba18e65e.jpg)
我正在使用asmack api为Gtalk创建一个聊天应用程序,我希望在用户离线时获取消息,但是由于ServiceDiscoveryManager中的一些问题而导致问题,并且说该功能未实现(501)并试图实现所有其他用户有同样问题的东西,但现在我得到这个错误.我发布代码和logcat与此.任何帮助赞赏.
ConnectionConfiguration connConfig = new ConnectionConfiguration(
host, Integer.parseInt(port), service);
connConfig.setSASLAuthenticationEnabled(true);
connConfig.setSendPresence(false);
connection = new XMPPConnection(connConfig);
connection.connect();
connection.login(username, password);
ServiceDiscoveryManager sdm= ServiceDiscoveryManager.getInstanceFor(connection);
mOfflineMessageManager = new OfflineMessageManager(connection);
offlinemsgs = mOfflineMessageManager.getMessageCount();
这是我在登录后立即调用离线消息的代码,下面是logcat错误中的响应:
03-16 11:26:53.871: W/System.err(325): feature-not-implemented(501)
03-16 11:26:53.881: W/System.err(325): at org.jivesoftware.smackx.OfflineMessageManager.getMessages(OfflineMessageManager.java:210)
03-16 11:26:53.881: W/System.err(325): at com.apache.android.xmpp.MainScreen.getOfflinemessages(MainScreen.java:911)
03-16 11:26:53.881: W/System.err(325): at com.apache.android.xmpp.MainScreen$LogIn.doInBackground(MainScreen.java:612)
03-16 11:26:53.881: W/System.err(325): at com.apache.android.xmpp.MainScreen$LogIn.doInBackground(MainScreen.java:1)
03-16 11:26:53.881: W/System.err(325): at android.os.AsyncTask$2.call(AsyncTask.java:185)
03-16 11:26:53.881: W/System.err(325): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
03-16 11:26:53.881: W/System.err(325): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
03-16 11:26:53.881: W/System.err(325): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
03-16 11:26:53.881: W/System.err(325): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
03-16 11:26:53.891: W/System.err(325): at java.lang.Thread.run(Thread.java:1096)
请帮助解决这个问题,试图从很多天来获得解决方案,但无法找到任何解决方案.
解决方法:
试试这个 :
ConnectionConfiguration connConfig = new ConnectionConfiguration(
host, Integer.parseInt(port), service);
connConfig.setSASLAuthenticationEnabled(true);
connConfig.setSendPresence(false);
connection = new XMPPConnection(connConfig);
connection.connect();
connection.login(username, password);
ServiceDiscoveryManager sdm= ServiceDiscoveryManager.getInstanceFor(connection);
////////////////////////////
OfflineMessageManager offlineManager = new OfflineMessageManager(
Client.getConnection());
try {
Iterator<org.jivesoftware.smack.packet.Message> it = offlineManager
.getMessages();
System.out.println(offlineManager.supportsFlexibleRetrieval());
System.out.println("Number of offline messages:: " + offlineManager.getMessageCount());
Map<String,ArrayList<Message>> offlineMsgs = new HashMap<String,ArrayList<Message>>();
while (it.hasNext()) {
org.jivesoftware.smack.packet.Message message = it.next();
System.out
.println("receive offline messages, the Received from [" + message.getFrom()
+ "] the message:" + message.getBody());
String fromUser = message.getFrom().split("/")[0];
if(offlineMsgs.containsKey(fromUser))
{
offlineMsgs.get(fromUser).add(message);
}else{
ArrayList<Message> temp = new ArrayList<Message>();
temp.add(message);
offlineMsgs.put(fromUser, temp);
}
}
/ / Deal with a collection of offline messages ...
Set<String> keys = offlineMsgs.keySet();
Iterator<String> offIt = keys.iterator();
while(offIt.hasNext())
{
String key = offIt.next();
ArrayList<Message> ms = offlineMsgs.get(key);
TelFrame tel = new TelFrame(key);
ChatFrameThread cft = new ChatFrameThread(key, null);
cft.setTel(tel);
cft.start();
for (int i = 0; i < ms.size(); i++) {
tel.messageReceiveHandler(ms.get(i));
}
}
offlineManager.deleteMessages();
} catch (Exception e) {
e.printStackTrace();
}
看到这样:http://community.igniterealtime.org
内容总结
以上是互联网集市为您收集整理的android – 无法使用asmack api为Gtalk应用程序获取脱机消息全部内容,希望文章能够帮你解决android – 无法使用asmack api为Gtalk应用程序获取脱机消息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。