private String remoteurl = "http://jcw.591hx.com/djgnew/djgupdatefile/android_alert/hxsw_android_ver.txt";//这是一个服务器端的地址的定义
private final String tempfile = "version_alet_time";
private String version;
1.
// 获取设备信息
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imsi = tm.getSubscriberId();
String model = android.os.Build.MODEL;
String strDownFrom = null;
String strModel = null;
String strUrl = null;
PackageManager manager = this.getPackageManager();
try {
PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
strVersionText = info.versionName; // 本地存放的版本号
} catch (NameNotFoundException e) {
e.printStackTrace();
}
try {
HttpClient client = new DefaultHttpClient();
HttpUriRequest request = new HttpGet(remoteurl);
HttpResponse response = client.execute(request);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
reader = new BufferedReader(new InputStreamReader(response
.getEntity().getContent()));
version = reader.readLine();//服务器端存放的版本号
url = reader.readLine();//服务器端存放的下载地址
Float remoteversion = Float.parseFloat(version);
Float localversion = Float.parseFloat(strVersionText);
if (remoteversion - localversion > 0.00001) {
long curtime = new Date().getTime();
long prevalerttime = readTimeFromFile();// 从文件中读取
if (curtime - prevalerttime > 7 * 24 * 3600 * 1000) {
//每七天进行一次弹框提示
new AlertDialog.Builder(HXStockWarningActivity.this)
.setMessage("当前有新版本,是否升级?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int whichButton) {
//这里面可以根据自己的需要修改
setResult(RESULT_OK);// 确定按钮事件
Uri uri = Uri.parse(url);
Intent intent = new Intent(
Intent.ACTION_VIEW, uri);
startActivity(intent);
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int whichButton) {
}
}).show();
// 写入文件
writeTimeToFile(curtime);
}
}
}
} catch (Exception e) {
Log.e("HttpConnectionUtil", e.getMessage(), e);
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
}
}
2.
// 把版本升级弹框的时间写入文件
private void writeTimeToFile(long time) {
try {
FileOutputStream fout = openFileOutput(tempfile, MODE_PRIVATE);
byte[] bytes = Comm.LongToBytes(time);
fout.write(bytes);
fout.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 从文件里读上一次版本弹框的时间
public long readTimeFromFile() {
long ress = 0;
try {
FileInputStream fin = openFileInput(tempfile);
byte[] buffer = new byte[8];
fin.read(buffer);
ress = Comm.BytesToLong(buffer, 0);
fin.close();
} catch (Exception e) {
e.printStackTrace();
}
return ress;
}