Android版本检测\自动更新

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;       }   }


更多相关文章

  1. Android(安卓)日常报错之 Android(安卓)dependency 'com.android
  2. Android(安卓)Studio : Rendering Problems
  3. Android最新版本号与API级别对应关系
  4. NDK各版本下载
  5. android studio SDK版本的调节
  6. compileSdkVersion、buildToolsVersion、targetSdkVersion 、Fai
  7. Android(安卓)开发环境配置
  8. Unable to resolve target 'android-5' 问题
  9. Android(安卓)Studio com.android.support:percent 导入错误

随机推荐

  1. android中判断网络是否连接
  2. Android之录制视频文件
  3. Android开发错误信息与解决方案汇总
  4. Android(安卓)for x86
  5. Android(安卓)不休眠 不锁屏
  6. android map compass mode
  7. 学习电子书和视频大全
  8. android APK签名过程之CERT.SF分析
  9. Android调用系统发送短信界面
  10. android参考--发送短信