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. 设置 Android(安卓)wifi连接 samples【转】
  2. android rating bar style
  3. android 从矢量图SVG获取位图bitmap
  4. android应用商店完整版源码
  5. Creating Android(安卓)live wallpaper[转]
  6. Android(安卓)Base64Encoder解决方案
  7. Android出现java.net.SocketException: Permission denied的问题
  8. OpenGL ES教程V之更多3D模型(原文对照)
  9. SQLite in Android

随机推荐

  1. Android(安卓)Viewpager中的Fragment 保
  2. Android自定义UI之粒子效果
  3. 期中实验:记事本实现时间戳、搜索、正文缩
  4. Gallery初始化显示到指定位置
  5. Android(安卓)圆形图圆形ImageView
  6. Android(安卓)CreateBitmap
  7. 最新Android的SDK版本与API Level的对应
  8. Kotlin 如何实现复杂序列化Parcelable
  9. Android官方提供的两种viewpager滑动动画
  10. Android(安卓)上下文菜单 ContextMenu