Android 應用自動更新代碼

jopen 11年前發布 | 14K 次閱讀 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);  
}  

} </pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!