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篇的更多相关文章

  1. Android UI开发第二十八篇——Fragment中使用左右滑动菜单

    Fragment实现了Android UI的分片管理,尤其在平板开发中,好处多多.这一篇将借助Android UI开发第二十六篇——Fragment间的通信. Android UI开发第二十七篇——实 ...

  2. Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码

    以前写过两个Android开发配置文档,使用NDK进行JNI开发,这样能够利用以前已经写好的C++代码. 前两篇博客地址: http://blog.csdn.net/watkinsong/articl ...

  3. Android UI开发第三十篇——使用Fragment构建灵活的桌面

    http://www.lupaworld.com/article-222973-1.html 当我们设计应用程序时,希望能够尽最大限度的适配各种设备,包括4寸屏.7寸屏. 10寸屏等等,Android ...

  4. Android安卓开发一环境配置

    安卓项目开发 我采用的安卓开发软件是IDEA,IDEA功能强大,具有集成的安卓开发环境. 安卓开发的首要任务是在IDEA配置安卓开发环境 第一步新建一个安卓项目 按照提示完成操作,首次建立安卓项目它会 ...

  5. Android安卓开发中图片缩放讲解

    安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...

  6. Android 图片开发内幕系列第一篇

    前言:本来我是做电视应用的,但是因为公司要出手机,人员紧张,所以就抽调我去支援一下,谁叫俺是雷锋呢!我做的一个功能就是处理手机中的应用ICON,处理无非就是美化一下,重新与底板进行合成和裁剪,用到了很 ...

  7. Android UI开发第三十三篇——Navigation Drawer For Android API 7

    Creating a Navigation Drawer中使用的Navigation Drawer的android:minSdkVersion="14",现在Android API ...

  8. Android UI开发第三十一篇——Android的Holo Theme

    好长时间没写Android UI方面的文章了,今天就闲扯一下Android的Holo主题.一直做android开发的可能都知道,Android 系统的UI有过两次大的变化,一次是android 3.0 ...

  9. 【转】Android UI开发第三十一篇——Android的Holo Theme

    好长时间没写Android UI方面的文章了,今天就闲扯一下Android的Holo主题.一直做android开发的可能都知道,Android 系统的UI有过两次大的变化,一次是android 3.0 ...

随机推荐

  1. 如何检索Android设备的唯一ID

    关于本文档 Android的开发者在一些特定情况下都需要知道手机中的唯一设备ID.例如,跟踪应用程序的安装,生成用于复制保护的DRM时需要使用设备的唯一ID.在本文档结尾处提供了作为参考的示例代码片段 ...

  2. 【转】高通平台android 环境配置编译及开发经验总结

    原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  3. 【UVA 11997 K Smallest Sums】优先级队列

    来自<训练指南>优先级队列的例题. 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18702 题意:给定 ...

  4. 【POJ 2010 Moo University-Financial Aid】优先级队列

    题目链接:http://poj.org/problem?id=2010 题意:C只牛犊,各有自己的分数score和申请的补助aid,现要选出N只(N为奇数),使得其aid的总和不超过F,且按score ...

  5. laravel5.3 笔记一

    laravel5.3 笔记 安装环境 laravel环境,laravel中文学习论坛上面有相关的教程 创建应用 laravel new blog 其中blog就是你的应用的名字 数据迁移 php ar ...

  6. 用到的Python运算符

    假设变量a为10,变量b为20. 算术运算符  比较运算符 赋值运算符 逻辑运算符 运算符优先级 对于逻辑运算符,not的优先级最大,or的优先级最小.它们三个的优先级排序为:not > and ...

  7. Android应用程序与SurfaceFlinger服务的连接过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7857163 前文在描述Android应用程序和 ...

  8. LFS: Interface eth0 doesn't exist

    环境 宿主主机:Ubuntu 14.04.4 LTS 32位 LFS内核:Linux 4.2.0 好不用容易将LFS引导起来了,但系统启动后,无法配置网口.系统启动时提示:Interface eth0 ...

  9. Sublime Text 添加到右键菜单 带菜单图标

    1.打开 regedit 2.找到节点 HKEY_CLASSSES_ROOT -> * -> Shell 3.右键选择新建“ 项 ” 这个项的名字将作为右键菜单的菜单名称,我用的“ Sub ...

  10. 天坑 之 java web servlet+jsp项目 配置后 404 (MyEclipse转eclipse)

    最近搞一个自己的博客系统玩,用了servlet+jsp,结果发现了两个大问题: 1.无法 Export 出 WAR文件: 2.生成WAR,放置到TOMCAT的 webapps目录后,http://lo ...