package com.hiyo.game.pdk.tool;   import java.io.File;   import java.io.FileOutputStream;   import java.io.InputStream;   import java.net.URL;   import java.net.URLConnection;   import android.app.Activity;   import android.app.AlertDialog;   import android.app.ProgressDialog;   import android.content.Context;   import android.content.DialogInterface;   import android.content.Intent;   import android.content.pm.PackageInfo;   import android.content.pm.PackageManager.NameNotFoundException;   import android.net.ConnectivityManager;   import android.net.NetworkInfo;   import android.net.Uri;   import android.util.Log;   import android.webkit.URLUtil;   import com.hiyo.game.pdk.activity.R;   /**  * Android AutoUpdate.  *   * lazybone/2010.08.20  *   * 1.Set apkUrl.  *   * 2.check().  *   * 3.add delFile() method in resume()\onPause().  */  public class MyAutoUpdate {       public Activity activity = null;       public int versionCode = 0;       public String versionName = "";       private static final String TAG = "AutoUpdate";       private String currentFilePath = "";       private String currentTempFilePath = "";       private String fileEx = "";       private String fileNa = "";       private String strURL = "http://127.0.0.1:81/ApiDemos.apk";       private ProgressDialog dialog;       public MyAutoUpdate(Activity activity) {           this.activity = activity;           getCurrentVersion();       }       public void check() {           if (isNetworkAvailable(this.activity) == false) {               return;           }           if (true) {// Check version.               showUpdateDialog();           }       }       public static boolean isNetworkAvailable(Context ctx) {           try {               ConnectivityManager cm = (ConnectivityManager) ctx                       .getSystemService(Context.CONNECTIVITY_SERVICE);               NetworkInfo info = cm.getActiveNetworkInfo();               return (info != null && info.isConnected());           } catch (Exception e) {               e.printStackTrace();               return false;           }       }       public void showUpdateDialog() {           @SuppressWarnings("unused")           AlertDialog alert = new AlertDialog.Builder(this.activity)                   .setTitle("Title")                   .setIcon(R.drawable.icon)                   .setMessage("Update or not?")                   .setPositiveButton("Update",                           new DialogInterface.OnClickListener() {                               public void onClick(DialogInterface dialog,                                       int which) {                                   downloadTheFile(strURL);                                   showWaitDialog();                               }                           })                   .setNegativeButton("Cancel",                           new DialogInterface.OnClickListener() {                               public void onClick(DialogInterface dialog,                                       int which) {                                   dialog.cancel();                               }                           }).show();       }       public void showWaitDialog() {           dialog = new ProgressDialog(activity);           dialog.setMessage("Waitting for update...");           dialog.setIndeterminate(true);           dialog.setCancelable(true);           dialog.show();       }       public void getCurrentVersion() {           try {               PackageInfo info = activity.getPackageManager().getPackageInfo(                       activity.getPackageName(), 0);               this.versionCode = info.versionCode;               this.versionName = info.versionName;           } catch (NameNotFoundException e) {               e.printStackTrace();           }       }       private void downloadTheFile(final String strPath) {           fileEx = strURL.substring(strURL.lastIndexOf(".") + 1, strURL.length())                   .toLowerCase();           fileNa = strURL.substring(strURL.lastIndexOf("/") + 1,                   strURL.lastIndexOf("."));           try {               if (strPath.equals(currentFilePath)) {                   doDownloadTheFile(strPath);               }               currentFilePath = strPath;               Runnable r = new Runnable() {                   public void run() {                       try {                           doDownloadTheFile(strPath);                       } catch (Exception e) {                           Log.e(TAG, e.getMessage(), e);                       }                   }               };               new Thread(r).start();           } catch (Exception e) {               e.printStackTrace();           }       }       private void doDownloadTheFile(String strPath) throws Exception {           Log.i(TAG, "getDataSource()");           if (!URLUtil.isNetworkUrl(strPath)) {               Log.i(TAG, "getDataSource() It's a wrong URL!");           } else {               URL myURL = new URL(strPath);               URLConnection conn = myURL.openConnection();               conn.connect();               InputStream is = conn.getInputStream();               if (is == null) {                   throw new RuntimeException("stream is null");               }               File myTempFile = File.createTempFile(fileNa, "." + fileEx);               currentTempFilePath = myTempFile.getAbsolutePath();               FileOutputStream fos = new FileOutputStream(myTempFile);               byte buf[] = new byte[128];               do {                   int numread = is.read(buf);                   if (numread <= 0) {                       break;                   }                   fos.write(buf, 0, numread);               } while (true);               Log.i(TAG, "getDataSource() Download  ok...");               dialog.cancel();               dialog.dismiss();               openFile(myTempFile);               try {                   is.close();               } catch (Exception ex) {                   Log.e(TAG, "getDataSource() error: " + ex.getMessage(), ex);               }           }       }       private void openFile(File f) {           Intent intent = new Intent();           intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);           intent.setAction(android.content.Intent.ACTION_VIEW);           String type = getMIMEType(f);           intent.setDataAndType(Uri.fromFile(f), type);           activity.startActivity(intent);       }       public void delFile() {           Log.i(TAG, "The TempFile(" + currentTempFilePath + ") was deleted.");           File myFile = new File(currentTempFilePath);           if (myFile.exists()) {               myFile.delete();           }       }       private String getMIMEType(File f) {           String type = "";           String fName = f.getName();           String end = fName                   .substring(fName.lastIndexOf(".") + 1, fName.length())                   .toLowerCase();           if (end.equals("m4a") || end.equals("mp3") || end.equals("mid")                   || end.equals("xmf") || end.equals("ogg") || end.equals("wav")) {               type = "audio";           } else if (end.equals("3gp") || end.equals("mp4")) {               type = "video";           } else if (end.equals("jpg") || end.equals("gif") || end.equals("png")                   || end.equals("jpeg") || end.equals("bmp")) {               type = "image";           } else if (end.equals("apk")) {               type = "application/vnd.android.package-archive";           } else {               type = "*";           }           if (end.equals("apk")) {           } else {               type += "/*";           }           return type;       }   }  

本文转载自:Android版本检测\自动更新 http://www.eoeandroid.com/thread-117764-1-1.html

更多相关文章

  1. Android: ViewPager and Fragments
  2. Not targeting the latest versions of Android
  3. Android开发需要配置的环境
  4. AndClear - Android(安卓)Clean-up Management Software
  5. Android(安卓)7.0版本升级解析包错误
  6. 自动更新版本
  7. AndClear - Android(安卓)Clean-up Management Software
  8. Android(安卓)获取已经安装的程序
  9. phonegap android更新

随机推荐

  1. Android编程简单实现拨号器功能的方法
  2. Android(安卓)low memory killer 详解
  3. Android开发指南-框架主题-资源和资产
  4. android 触摸事件、点击事件的区别
  5. 二、Android工程的编译过程
  6. Android中的Menu菜单小解
  7. 谷歌Android手机应用开发环境的搭建
  8. Android(安卓)进程和线程模型
  9. 用 Golang 开发 Android(安卓)应用(七)——
  10. 最近Android有点烦