Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->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;       }   }

原文:http://www.cnblogs.com/tt_mc/archive/2010/09/13/1825119.html

更多相关文章

  1. OpenGL ES教程V之更多3D模型(原文对照)
  2. 【Android开发学习43】OpenGL ES教程VI之纹理贴图(原文对照)
  3. OpenGL ES教程II之创建多边形(原文对照)
  4. OpenGL ES教程IV之着色(原文对照)
  5. OpenGL ES教程III之移动变换(原文对照)
  6. OpenGL ES教程VI之纹理贴图(原文对照)
  7. Android Fresco图片处理库用法API英文原文文档2-1(Facebook开源An
  8. 原文:Android Theme XML

随机推荐

  1. Accessibility辅助功能--一念天堂,一念地
  2. AsyncTask研究(以Android(安卓)10.0为准)
  3. android frida 检测_Android逆向之hook框
  4. Android(安卓)Power Management
  5. Android高级开发面试题以及笞案整理
  6. Android(安卓)TextView 属性设置
  7. Android开发新选择:Kotlin
  8. Android(安卓)init.rc
  9. [android]利用动画实现view跑马灯效果
  10. Android——View的事件体系