当前位置:操作系统 > 安卓/Android >>

android之程序自动更新的实现

应用都有版本的更新,那么怎样实现更新呢?今天就为大家介绍应用自动更新的全过程。

 


程序自动更新的流程大致如下:

程序启动 -->适时后台检查更新--->链接远程服务器-->获取新版本信息

-->比对当前版本-->if(有更新)-->显示更新提示对话框并显示更新的内容-->交与用户选择.

 


下面是我做的demo,大家可以参考一下:

布局比较简单就不上代码了。

主程序代码:


[java] package com.cloay.update; 
 
import java.io.IOException; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInte易做图ce; 
import android.content.pm.PackageManager.NameNotFoundException; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 
/**
 * 程序自动更新
 * UpdateTestActivity.java
 * @author Cloay
 * 2011-11-23
 */ 
public class UpdateTestActivity extends Activity { 
    private Button button; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
         
        button = (Button) findViewById(R.id.check); 
        button.setOnClickListener(new OnClickListener() { 
             
            @Override 
            public void onClick(View v) { 
                try { 
                    checkVersion(); 
                } catch (NameNotFoundException e) { 
                    // TODO Auto-generated catch block  
                    e.printStackTrace(); 
                } 
            } 
        }); 
    } 
     
    /**
     * 检查是否需要更新程序
     * @throws NameNotFoundException 
     */ 
    private void checkVersion() throws NameNotFoundException{ 
        UpdateInfo updateInfo = new UpdateInfo(); 
        URL url; 
        try { 
            url = new URL("http://localhost:8080/update.xml"); 
            HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
//          connection.setConnectTimeout(5000);  
            updateInfo = ParseXmlUtils.parseXml(connection.getInputStream()); 
             
        } catch (MalformedURLException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
        if(updateInfo.getVersion().equals(VersionUtil.getVersionName(this))){ 
            Toast.makeText(this, "版本相同,不需要升级!", Toast.LENGTH_SHORT).show(); 
        } 
        else{ 
            showUpdateDialog(updateInfo); 
        } 
    } 
 
    private void showUpdateDialog(UpdateInfo updateInfo) { 
        AlertDialog alertDialog = new AlertDialog.Builder(this) 
        .setTitle("提示检测到新版本,确定升级吗?") 
        .setIcon(R.drawable.ask) 
        .setMessage(updateInfo.getDescription()) 
        .setPositiveButton("确定",  
        new DialogInte易做图ce.OnClickListener() { 
            @Override 
            public void onClick(DialogInte易做图ce dialog, int which) { 
                dialog.cancel();   
            } 
        }) 
        .setNegativeButton("取消", 
        new DialogInte易做图ce.OnClickListener() { 
             
            @Override 
            public void onClick(DialogInte易做图ce dialog, int which) { 
                dialog.cancel();     
            } 
        }).create(); 
        alertDialog.show(); 
    } 

package com.cloay.update;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInte易做图ce;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;补充:移动开发 , Android ,

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,