| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
3y8nn
11年前发布

Android App在线更新的代码

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