zoukankan      html  css  js  c++  java
  • android应用客户端自动升级代码 (转)

    android应用客户端自动升级代码

    随着应用产品的不断发展,升级是不可避免的事情,做android应用开发的朋友们都会清楚,自己做的应用要不断的升级才能满足用户的需求,那么应用客户端的自动升级是怎么实现的呢?今天给大家分享一些代码如下,希望能够解决开发者朋友们的困惑:import java.io.File;  

    import java.io.FileOutputStream;

    import java.io.IOException;  

    import java.io.InputStream;  

    import org.apache.http.HttpEntity;   
    import org.apache.http.HttpResponse;   
    import org.apache.http.client.ClientProtocolException;   
    import org.apache.http.client.HttpClient;   
    import org.apache.http.client.methods.HttpGet;   
    import org.apache.http.impl.client.DefaultHttpClient;   
       
    import android.app.AlertDialog;   
    import android.app.Dialog;   
    import android.app.ProgressDialog;   
    import android.content.DialogInterface;   
    import android.content.Intent;   
    import android.net.Uri;   
    import android.os.Bundle;   
    import android.os.Environment;   
    import android.os.Handler;   
       
    public class Update extends BaseActivity {   
       
    public ProgressDialog pBar;   
       
    private Handler handler =
    new Handler();   
       
        @Override   
        protected void onCreate(Bundle savedInstanceState) {   
            super.onCreate(savedInstanceState);   
            setContentView(R.layout.update);   
            Dialog dialog
    =
    new AlertDialog.Builder(Update.this).setTitle("系统更新")   
                    .setMessage(
    "发现新版本,请更新!")// 设置内容   
                    .setPositiveButton(
    "确定",// 设置确定按钮   
                            
    new DialogInterface.OnClickListener() {   
       
                                @Override   
                               
    public void onClick(DialogInterface dialog,   
                                        
    int which) {   
                                    pBar
    =
    new ProgressDialog(Update.this);   
                                    pBar.setTitle(
    "正在下载");   
                                    pBar.setMessage(
    "请稍候...");   
                                    pBar   
                                            .setProgressStyle(ProgressDialog.STYLE_SPINNER);   
                                    downFile(
    "http://url:8765/OA.apk");   
                                       
                                }   
       
                            }).setNegativeButton(
    "取消",   
                            
    new DialogInterface.OnClickListener() {   
                               
    public void onClick(DialogInterface dialog,   
                                        
    int whichButton) {   
                                    
    // 点击"取消"按钮之后退出程序   
                                       
                                }   
                            }).create();
    // 创建   
            
    // 显示对话框   
            dialog.show();   
       
        }   
       
        void downFile(final
    String url) {   
            pBar.show();   
            
    new Thread() {   
                
    public void run() {   
                    HttpClient client
    =
    new DefaultHttpClient();   
                   
    // params[0]代表连接的url   
                    HttpGet
    get
    =
    new HttpGet(url);   
                    HttpResponse response;   
                    try {   
                        response
    = client.execute(get);   
                        HttpEntity entity
    = response.getEntity();   
                        
    long length = entity.getContentLength();   
                        InputStream
    is
    = entity.getContent();   
                        FileOutputStream fileOutputStream
    =
    null;   
                        
    if (is !=
    null) {   
       
                            File file
    =
    new File(Environment   
                                    .getExternalStorageDirectory(),
    "OA.apk");   
                            fileOutputStream
    =
    new FileOutputStream(file);   
                               
                            
    byte[] buf =
    new
    byte[1024];   
                            
    int ch =
    -1;   
                            
    int count =
    0;   
                            
    while ((ch =
    is.read(buf)) !=
    -1) {   
                               
    // baos.write(buf, 0, ch);   
                                fileOutputStream.write(buf,
    0, ch);   
                                count
    += ch;   
                               
    if (length >
    0) {   
                                  
                                }   
       
                            }   
       
                        }   
                        fileOutputStream.flush();   
                        
    if (fileOutputStream !=
    null) {   
                            fileOutputStream.close();   
                        }   
                        down();   
                    } catch (ClientProtocolException e) {   
                        
    // TODO Auto-generated catch block   
                        e.printStackTrace();   
                    } catch (IOException e) {   
                        
    // TODO Auto-generated catch block   
                        e.printStackTrace();   
                    }   
                }   
       
            }.start();   
       
        }   
       
        void down() {   
            handler.post(
    new Runnable() {   
                
    public void run() {   
                    pBar.cancel();   
                    update();   
                }   
            });   
       
        }   
       
        void update() {   
       
            Intent intent
    =
    new Intent(Intent.ACTION_VIEW);   
            intent.setDataAndType(Uri.fromFile(
    new File("/sdcard/OA.apk")),   
                   
    "application/vnd.android.package-archive");   
            startActivity(intent);   
        }   
       
    }  
  • 相关阅读:
    ubuntu 解决“无法获得锁 /var/lib/dpkg/lock -open (11:资源暂时不可用)”的方法
    解决VMware安装ubuntu16.04后无法全屏的问题
    力推:无限制下载神器aria2
    使用Pangolon在同一副图中,画出两个轨迹,比较误差
    Pangolin中opengl的混合(gl_blend)
    Ubuntu 16.04: How to install OpenCV
    ubuntu16.04下安装Eigen
    ubuntu16.04下安装Sophus
    svn删除账户信息
    javaweb乱码(tomcat服务器)
  • 原文地址:https://www.cnblogs.com/zhwl/p/2171276.html
Copyright © 2011-2022 走看看