android安卓开发问题集 XMPP篇
1、消息推送查了下资料,后面还是使用了androidpn
(1)java.security.KeyStoreException: KeyStore jks implementation not found
解决方法, 在创建ConnectionConfiguration 时指定证书位置及类型:
connConfig.setTruststorePath("/system/etc/security/cacerts.bks");
connConfig.setTruststoreType("bks");
(2) 客户端一些说明
asmack的代码以及jar可以从 http://code.google.com/p/asmack/downloads/list 下载.
在android中创建一个service用来管理连接以及处理报文.
创建连接代码如下 ,其中server_ip是jabber服务器的ip, 可以是域名.
Log.i(TAG, "ConnectManager in...");
ConnectionConfiguration connConfig = new ConnectionConfiguration(server_ip);
// connConfig.setSecurityMode(SecurityMode.disabled);
connConfig.setSecurityMode(SecurityMode.required);
connConfig.setSASLAuthenticationEnabled(false);
connConfig.setCompressionEnabled(false);
mConnection = new XMPPConnection(connConfig);
连接到服务器代码:
if (!isConnect()) {
Log.i(TAG, "Connect to server now...");
try {
// Connect to the server
mConnection.connect();
Log.i(TAG, "connect success!!!");
} catch (XMPPException e) {
Log.e(TAG, "connect failed!", e);
}
}
判断是否连接上:
mConnection.isConnected();
登录到服务器代码, 需要用户名和密码:
if (!isLogin()) {
Log.i(TAG, "Login to server now...");
try {
mConnection.login(username, passwd);
Log.i(TAG, "login success!!!");
} catch (XMPPException e) {
Log.e(TAG, "login failed!", e);
}
}
判断是否登录上:
mConnection.isAuthenticated();
添加连接监听代码:
mConnection.addConnectionListener(new ConnectionListener() {
public void connectionClosed() {
// TODO
}
public void connectionClosedOnError(Exception e) {
// TODO
}
public void reconnectingIn(int seconds) {
// Ignore
}
public void reconnectionFailed(Exception e) {
// Ignore
}
public void reconnectionSuccessful() {
// Ignore
}
});
添加包监听代码, 以名单列表为例:
PacketFilter rosterFilter = new PacketTypeFilter(RosterPacket.class);
mConnection.addPacketListener(new RosterPacketListener(), rosterFilter);
其中 RosterPacket类是继承Packet类的, 除此之外还有 IQ, Message, Presence, AuthMechanism, Response五种类型的包.
可以使用OrFilter来同时处理多种类型的包. 以下代码用来接收所有的包:
PacketFilter rosterPF = new PacketTypeFilter(RosterPacket.class);
PacketFilter IQPF = new PacketTypeFilter(IQ.class);
PacketFilter MSGPF = new PacketTypeFilter(Message.class);
PacketFilter PresencePF = new PacketTypeFilter(Presence.class);
PacketFilter AMPF = new PacketTypeFilter(AuthMechanism.class);
PacketFilter REPF = new PacketTypeFilter(Response.class);
OrFilter allPF = new OrFilter(rosterPF, IQPF);
allPF.addFilter(MSGPF);
allPF.addFilter(PresencePF);
allPF.addFilter(AMPF);
allPF.addFilter(REPF);
PacketListener myListener = new PacketListener() {
public void processPacket(Packet pk) {
Log.i(TAG, "receive message : " + pk.toString());
}
};
mConnection.addPacketListener(myListener, allPF);
android安卓开发问题集 XMPP篇的更多相关文章
- Android UI开发第二十八篇——Fragment中使用左右滑动菜单
Fragment实现了Android UI的分片管理,尤其在平板开发中,好处多多.这一篇将借助Android UI开发第二十六篇——Fragment间的通信. Android UI开发第二十七篇——实 ...
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
以前写过两个Android开发配置文档,使用NDK进行JNI开发,这样能够利用以前已经写好的C++代码. 前两篇博客地址: http://blog.csdn.net/watkinsong/articl ...
- Android UI开发第三十篇——使用Fragment构建灵活的桌面
http://www.lupaworld.com/article-222973-1.html 当我们设计应用程序时,希望能够尽最大限度的适配各种设备,包括4寸屏.7寸屏. 10寸屏等等,Android ...
- Android安卓开发一环境配置
安卓项目开发 我采用的安卓开发软件是IDEA,IDEA功能强大,具有集成的安卓开发环境. 安卓开发的首要任务是在IDEA配置安卓开发环境 第一步新建一个安卓项目 按照提示完成操作,首次建立安卓项目它会 ...
- Android安卓开发中图片缩放讲解
安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...
- Android 图片开发内幕系列第一篇
前言:本来我是做电视应用的,但是因为公司要出手机,人员紧张,所以就抽调我去支援一下,谁叫俺是雷锋呢!我做的一个功能就是处理手机中的应用ICON,处理无非就是美化一下,重新与底板进行合成和裁剪,用到了很 ...
- Android UI开发第三十三篇——Navigation Drawer For Android API 7
Creating a Navigation Drawer中使用的Navigation Drawer的android:minSdkVersion="14",现在Android API ...
- Android UI开发第三十一篇——Android的Holo Theme
好长时间没写Android UI方面的文章了,今天就闲扯一下Android的Holo主题.一直做android开发的可能都知道,Android 系统的UI有过两次大的变化,一次是android 3.0 ...
- 【转】Android UI开发第三十一篇——Android的Holo Theme
好长时间没写Android UI方面的文章了,今天就闲扯一下Android的Holo主题.一直做android开发的可能都知道,Android 系统的UI有过两次大的变化,一次是android 3.0 ...
随机推荐
- BZOJ 1086 王室联邦
http://www.lydsy.com/JudgeOnline/problem.php?id=1086 思路:贪心,每次当储存的儿子大于等于B时,分出一个块,这样每次每个块至多为2B,这样剩下的没有 ...
- Java Socket 简单梳理
Sockets let you send raw streams of bytes back and forth between two computers, giving you fairly lo ...
- expect set timeout -1 永不超时
. ~/.bash_profile passwd='xxx' expect <<! set timeout -1 spawn rsync -avH /webapps/Seeyon/A8/b ...
- UESTC_邱老师降临小行星 2015 UESTC Training for Search Algorithm & String<Problem B>
B - 邱老师降临小行星 Time Limit: 10000/5000MS (Java/Others) Memory Limit: 65536/65535KB (Java/Others) Su ...
- vector迭代器失效的一种情形
使用过STL的人都应该知道关于迭代器失效的原理,这里以后vector迭代器失效为例: 第一种:当插入一个元素到vector中,如果插入后容器已满,那么容器将新开辟一块内存区域,然后 将原内存中的数据拷 ...
- PHP MySQL 连接数据库 之 Connect
连接到一个 MySQL 数据库 在您能够访问并处理数据库中的数据之前,您必须创建到达数据库的连接. 在 PHP 中,这个任务通过 mysql_connect() 函数完成. 语法 mysql_conn ...
- SQL Server 2000 函数使用---CAST 和 CONVERT
本文来自:http://www.cnblogs.com/xh831213/category/47654.html 将某种数据类型的表达式显式转换为另一种数据类型.CAST 和 CONVERT 提供相似 ...
- idea maven jetty插件热部署
maven tomcat插件好像无法进行热部署,jetty可以如下配置实现热部署,但是idea无法进行自动编译,所以需要如下快捷键 Ctrl+Shift+F9,编译 Ctrl+F9,生成项目 < ...
- SQL Server 2008 修改表名
有一张表 修改起 if exists (select * from sys.objects where object_id = object_id(N'Table_1') and type in ...
- Chrome和Firefox浏览器调试对比
最近的项目中使用Extjs5, 其中主要的一个特点就是js文件的动态加载,之前使用Firefox浏览器对js文件进行调试,打断点时,只对当次调试有效,刷新之后,由于动态加载的js文件(文件名后面加了一 ...