使用okttputil网络请求框架检测更新
public
void
checkUpdate(Activity activity, final
boolean
isShowTip) { OkHttpUtils.get().url(Url.UPDATE_VERSION).build().execute(new
StringCallback() { @Override public
void
onError(Call call, Exception e, int
id) { } @Override public
void
onResponse(String response, int
id) { final
JsonData jsonData = JsonData.create(response); int
versionCode = jsonData.optInt("version"); int
currentVersionCode = SystemUtils.getAppVersionCode(context); if
(versionCode > currentVersionCode) { AlertDialog.Builder
builder = new
AlertDialog.Builder(context); builder.setTitle("更新"); builder.setMessage("检测到有更新,是否立刻更新?"); builder.setNegativeButton("稍后更新", new
DialogInterface.OnClickListener() { @Override public
void
onClick(DialogInterface dialog, int
which) { } }); builder.setPositiveButton("立刻更新", new
DialogInterface.OnClickListener() { @Override public
void
onClick(DialogInterface dialog, int
which) { if
(!StringUtils.isWifi(context)) { AlertDialog.Builder
builder = new
AlertDialog.Builder(context); builder.setTitle("提示"); builder.setMessage("您当前正在使用移动网络,继续下载将消耗流量"); builder.setNegativeButton("取消", new
DialogInterface.OnClickListener() { @Override public
void
onClick(DialogInterface dialog, int
which) { } }); builder.setPositiveButton("确定", new
DialogInterface.OnClickListener() { @Override public
void
onClick(DialogInterface dialog, int
which) { downLoadApk(jsonData.optString("download")); } }); builder.create().show(); } else
{ downLoadApk(jsonData.optString("download")); } } }); builder.create().show(); } else
{ if
(isShowTip) { ToastUtils.show(context, "当前已是最新版本"); } } } });}/* *
从服务器中下载APK*/ protected
void
downLoadApk(final
String url) { final
ProgressDialog pd; //进度条对话框 pd
= new
ProgressDialog(this); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setMessage("正在下载更新"); pd.show(); new
Thread() { @Override public
void
run() { try
{ File
file = DownLoadManager.getFileFromServer(url, pd); sleep(3000); installApk(file); pd.dismiss(); //结束掉进度条对话框 } catch
(Exception e) { Toast.makeText(context, "下载失败!", Toast.LENGTH_SHORT).show(); e.printStackTrace(); } } }.start(); } //安装apk protected
void
installApk(File file) { Intent
intent = new
Intent(); //执行动作 intent.setAction(Intent.ACTION_VIEW); //执行的数据类型 intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); startActivity(intent); } |
这里是下载数据的代码DownLoadManager.java
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import
java.io.BufferedInputStream;import
java.io.File;import
java.io.FileOutputStream;import
java.io.InputStream;import
java.net.HttpURLConnection;import
java.net.URL;import
android.app.ProgressDialog;import
android.os.Environment;public
class
DownLoadManager { public
static
File getFileFromServer(String path, ProgressDialog pd) throws
Exception { //如果相等的话表示当前的sdcard挂载在手机上并且是可用的 if
(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { URL
url = new
URL(path); HttpURLConnection
conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); //获取到文件的大小 pd.setMax(conn.getContentLength()); InputStream
is = conn.getInputStream(); File
file = new
File(Environment.getExternalStorageDirectory(), "某某某.apk"); FileOutputStream
fos = new
FileOutputStream(file); BufferedInputStream
bis = new
BufferedInputStream(is); byte[]
buffer = new
byte[1024]; int
len; int
total = 0; while
((len = bis.read(buffer)) != -1)
{ fos.write(buffer, 0,
len); total
+= len; //获取当前下载量 pd.setProgress(total); } fos.close(); bis.close(); is.close(); return
file; } else
{ return
null; } }} |
1279

被折叠的 条评论
为什么被折叠?



