android检测更新版本,android 版本检测与自动更新

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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值