阅读更多
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版本号的识别——$(PLATFORM_VERSION)
  2. 《ArcGIS API for Android 案例教程》PDF版本
  3. ionic 自动编译android的release版本
  4. Android版本28使用http请求报错not permitted by network securi
  5. Android android 6.0权限校验及版本兼容问题
  6. Android App 版本更新
  7. android 对比版本号
  8. android官方下载链接最新版 (Windows版本)

随机推荐

  1. mysql8.0.11数据目录迁移的实现
  2. mysql8.0.20数据目录迁移的方法
  3. MySQL主从状态检查的实现
  4. MySQL InnoDB 锁的相关总结
  5. MySQL 查看链接及杀掉异常链接的方法
  6. MySQL数据库自动补全命令的三种方法
  7. MySQL的DATE_FORMAT函数的使用
  8. M1芯片安装mysql8.0数据库的实现步骤(图
  9. mysql实现自增序列的示例代码
  10. mysql 实现设置多个主键的操作