android 版本更新之JAR的应用

  • 版本更新我们还可以使用一些第三方的资源
  • 下面笔者来一一介绍:
  • 版本更的实现思路我就不一一说了,不了解的看笔者的 版本更新篇。
  • 这里我们说一下第三方的应用:
  • 大家可以根据笔者的这个地址下载 jar包
    点击下载
  • 说一下怎么应用这个第三方:
  • 我们更新都会有一个更新的接口 我以这个为例吧
  • http://www.oschina.net/MobileAppVersion.xml
  • 这里我解析的是xml的,可以根据你的类型自行解析。
  • 首相根据接口请求网络
public void requestData(){
        new Thread(){
            public void run() {
                try {
                    URL url = new URL("http://www.oschina.net/MobileAppVersion.xml");
                    HttpURLConnection conn = (HttpURLConnection) url
                            .openConnection();
                    int responseCode = conn.getResponseCode(); 
                    if (responseCode == 200) { 
                        //获取到输入流
                        InputStream inputStream = conn.getInputStream();

        //*****************************************
        //调用解析
    Update parse = Update.parse(inputStream);
                        Message msg=Message.obtain();
                        msg.what=0;
                        msg.obj=parse;
                        handelr.sendMessage(msg);
                    } 
                } catch (Exception e) {

                    e.printStackTrace();
                }
            };
        }.start();
    }
  • 解析
/**
     *      解析获取到输入流
     * @param inputStream
     * @return
     */
    public static Update parse(InputStream inputStream){
        Update update = null;
        //获得XmlPullParser解析器
        XmlPullParser xmlParser = Xml.newPullParser();
        try {           
            xmlParser.setInput(inputStream, UTF8);
            //获得解析到的事件类别,这里有开始文档,结束文档,开始标签,结束标签,文本等等事件。
            int evtType=xmlParser.getEventType();
            //一直循环,直到文档结束    
            while(evtType!=XmlPullParser.END_DOCUMENT){ 
                String tag = xmlParser.getName(); 
                switch(evtType){ 
                    case XmlPullParser.START_TAG:                       
                        //通知信息
                        if(tag.equalsIgnoreCase("android"))
                        {
                            update = new Update();
                        }
                        else if(update != null)
                        {
                            if(tag.equalsIgnoreCase("versionCode"))
                            {       //字符转换整数          
                                update.setVersionCode(toInt(xmlParser.nextText(),0));
                            }
                            else if(tag.equalsIgnoreCase("versionName"))
                            {                           
                                update.setVersionName(xmlParser.nextText());
                            }
                            else if(tag.equalsIgnoreCase("downloadUrl"))
                            {                           
                                update.setDownloadUrl(xmlParser.nextText());
                            }
                            else if(tag.equalsIgnoreCase("updateLog"))
                            {                           
                                update.setUpdateLog(xmlParser.nextText());
                            }
                        }
                        break;
                    case XmlPullParser.END_TAG:                 
                        break; 
                }
                //如果xml没有结束,则导航到下一个节点
                evtType=xmlParser.next();
            }       
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                inputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }   
        }      
        return update;       
    }

    /**
     * 字符串转整数
     * @param str
     * @param defValue
     * @return
     */
    public static int toInt(String str, int defValue) {
        try{
            return Integer.parseInt(str);
        }catch(Exception e){}
        return defValue;
    }

上面是需要bean实体类的:

/**
     *      解析获取到输入流
     * @param inputStream
     * @return
     */
    public static Update parse(InputStream inputStream){
        Update update = null;
        //获得XmlPullParser解析器
        XmlPullParser xmlParser = Xml.newPullParser();
        try {           
            xmlParser.setInput(inputStream, UTF8);
            //获得解析到的事件类别,这里有开始文档,结束文档,开始标签,结束标签,文本等等事件。
            int evtType=xmlParser.getEventType();
            //一直循环,直到文档结束    
            while(evtType!=XmlPullParser.END_DOCUMENT){ 
                String tag = xmlParser.getName(); 
                switch(evtType){ 
                    case XmlPullParser.START_TAG:                       
                        //通知信息
                        if(tag.equalsIgnoreCase("android"))
                        {
                            update = new Update();
                        }
                        else if(update != null)
                        {
                            if(tag.equalsIgnoreCase("versionCode"))
                            {       //字符转换整数          
                                update.setVersionCode(toInt(xmlParser.nextText(),0));
                            }
                            else if(tag.equalsIgnoreCase("versionName"))
                            {                           
                                update.setVersionName(xmlParser.nextText());
                            }
                            else if(tag.equalsIgnoreCase("downloadUrl"))
                            {                           
                                update.setDownloadUrl(xmlParser.nextText());
                            }
                            else if(tag.equalsIgnoreCase("updateLog"))
                            {                           
                                update.setUpdateLog(xmlParser.nextText());
                            }
                        }
                        break;
                    case XmlPullParser.END_TAG:                 
                        break; 
                }
                //如果xml没有结束,则导航到下一个节点
                evtType=xmlParser.next();
            }       
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                inputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }   
        }      
        return update;       
    }

    /**
     * 字符串转整数
     * @param str
     * @param defValue
     * @return
     */
    public static int toInt(String str, int defValue) {
        try{
            return Integer.parseInt(str);
        }catch(Exception e){}
        return defValue;
    }

下面我们在中的操作:

Handler handelr=new Handler(){
        public void handleMessage(android.os.Message msg) {
            if(msg.what==0){
                Update parse =  (Update) msg.obj;
//*************************************************
//注意我们要传进来的参数
//getDownloadUrl url路径
//MainActivity.this 上下文
//getVersionName()  版本号
//getUpdateLog()  弹出的界面现实的内容
    UpdateVersionutil uv = 
    UpdateVersionutil.getUpdataManger(parse.getDownloadUrl(), MainActivity.this, parse.getVersionName(), parse.getUpdateLog());
    //调用检测版本
                uv.checkUpdata();
            }
        }
    };

注意:要添加连接网络的权限哦!
效果我就展示了和前面的效果一样。

代码实现版本更新:http://blog.csdn.net/qq_34476727/article/details/52045764

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值