android中如何让自己开发的软件周期性的进行版本升级的提示

来源:互联网 发布:tensorflow中none 编辑:程序博客网 时间:2024/05/16 18:12

 

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;

 }

 

原创粉丝点击