android apk的更新下载
16lz
2021-01-26
package com.ys.download;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import com.squareup.okhttp.Callback;
import com.squareup.okhttp.FormEncodingBuilder;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import com.ys.viewpagerproject.R;
public class MainActivity extends Activity implements OnClickListener {
private Button btn_download;
private ProgressBar down_progressBar;
private OkHttpClient httpClient;
private Request request;
private String download_url;
public static String VERSIONUPDATE = "https://www.32gold.com/versionInter/listVersionInter.action";
public String str = "http://www.baidu.com";
private String mSavePath;
private int progress;
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
Log.e("info", msg.obj.toString());
try {
JSONObject jsonObject = new JSONObject(msg.obj.toString());
JSONObject data = jsonObject.getJSONObject("data");
JSONArray version_list = data.getJSONArray("versionList");
for (int i = 0; i < version_list.length(); i++) {
JSONObject version = version_list.getJSONObject(i);
download_url = version.getString("url1");
}
} catch (Exception e) {
e.printStackTrace();
}
if (download_url != null) {
Log.e("info", download_url + "downloadurl");
downloadAPK(download_url);
}
}else if(msg.what==2){
down_progressBar.setProgress((Integer)msg.obj);
}
}
};
private void downloadAPK(final String urlStr) {
new Thread(new Runnable() {
@Override
public void run() {
try {
// 判断SD卡是否存在,并且是否具有读写权限
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
// 获得存储卡的路径
String sdpath = Environment
.getExternalStorageDirectory().getAbsolutePath() + "/";
mSavePath = sdpath + "csj";
URL url = new URL(urlStr);
// 创建连接
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
//conn.connect();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("GET");
Log.e("info","执行了");
// 获取文件大小
int length = conn.getContentLength();
// 创建输入流
InputStream is = conn.getInputStream();
File file = new File(mSavePath);
// 判断文件目录是否存在
if (!file.exists()) {
Log.e("info","创建了目录");
file.mkdir();
}
File apkFile = new File(mSavePath, "apk");
FileOutputStream fos = new FileOutputStream(apkFile);
int count = 0;
// 缓存
byte buf[] = new byte[1024];
// 写入到文件中
do {
int numread = is.read(buf);
Log.e("info","创建了目录"+numread);
count += numread;
// 计算进度条位置
progress = (int) (((float) count / length) * 100);
Log.e("InfoProgress",progress+"");
// 更新进度
Message msg = Message.obtain();
msg.what = 2;
msg.obj = progress;
mHandler.sendMessage(msg);
if (numread <= 0) {
// 下载完成
mHandler.sendEmptyMessage(3);
break;
}
// 写入文件
fos.write(buf, 0, numread);
fos.flush();
} while (true);// 点击取消就停止下载.
fos.close();
is.close();
}
} catch (MalformedURLException e) {
e.printStackTrace();
Log.e("info","异常");
} catch (IOException e) {
Log.e("info","异常");
e.printStackTrace();
}
}
}).start();
}
// HttpURLConnection httpConnection = new Http
// HashMap map = new HashMap();
// map.put("pageNum", pageIndex + "");
// map.put("numPerPage", pageSize);
//
// String sign = DESMD5Utils.dsigndispost(map);
// AbRequestParams params = new AbRequestParams();
// params.put("pageNum", pageIndex + "");
// params.put("numPerPage", pageSize);
// params.put("sign", sign);
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_download);
initView();
btn_download.setOnClickListener(this);
httpClient = new OkHttpClient();
httpClient.setConnectTimeout(5000, TimeUnit.MILLISECONDS);
FormEncodingBuilder builder = new FormEncodingBuilder();
/**
* 添加请求的参数
*/
HashMap map = new HashMap();
map.put("data.type1", "2"); // 1 ios客户端 2 安卓客户端
map.put("data.versionNo", "130");
String sign = DESMD5Utils.dsigndispost(map);
builder.add("data.type1", "2");
builder.add("data.versionNo", "130");
builder.add("sign", sign);
Log.e("info", sign);
request = new Request.Builder().url(VERSIONUPDATE)
.post(builder.build()).build();
httpClient.newCall(request).enqueue(new Callback() {
@Override
public void onResponse(Response arg0) throws IOException {
if (arg0 != null) {
Message msg = Message.obtain();
msg.what = 1;
msg.obj = arg0.body().string();
;
mHandler.sendMessage(msg);
}
}
@Override
public void onFailure(Request arg0, IOException arg1) {
Log.e("info", "请求失败");
}
});
}
private void initView() {
btn_download = (Button) findViewById(R.id.btn_download);
down_progressBar = (ProgressBar) findViewById(R.id.down_progressBar);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import com.squareup.okhttp.Callback;
import com.squareup.okhttp.FormEncodingBuilder;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import com.ys.viewpagerproject.R;
public class MainActivity extends Activity implements OnClickListener {
private Button btn_download;
private ProgressBar down_progressBar;
private OkHttpClient httpClient;
private Request request;
private String download_url;
public static String VERSIONUPDATE = "https://www.32gold.com/versionInter/listVersionInter.action";
public String str = "http://www.baidu.com";
private String mSavePath;
private int progress;
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
Log.e("info", msg.obj.toString());
try {
JSONObject jsonObject = new JSONObject(msg.obj.toString());
JSONObject data = jsonObject.getJSONObject("data");
JSONArray version_list = data.getJSONArray("versionList");
for (int i = 0; i < version_list.length(); i++) {
JSONObject version = version_list.getJSONObject(i);
download_url = version.getString("url1");
}
} catch (Exception e) {
e.printStackTrace();
}
if (download_url != null) {
Log.e("info", download_url + "downloadurl");
downloadAPK(download_url);
}
}else if(msg.what==2){
down_progressBar.setProgress((Integer)msg.obj);
}
}
};
private void downloadAPK(final String urlStr) {
new Thread(new Runnable() {
@Override
public void run() {
try {
// 判断SD卡是否存在,并且是否具有读写权限
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
// 获得存储卡的路径
String sdpath = Environment
.getExternalStorageDirectory().getAbsolutePath() + "/";
mSavePath = sdpath + "csj";
URL url = new URL(urlStr);
// 创建连接
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
//conn.connect();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("GET");
Log.e("info","执行了");
// 获取文件大小
int length = conn.getContentLength();
// 创建输入流
InputStream is = conn.getInputStream();
File file = new File(mSavePath);
// 判断文件目录是否存在
if (!file.exists()) {
Log.e("info","创建了目录");
file.mkdir();
}
File apkFile = new File(mSavePath, "apk");
FileOutputStream fos = new FileOutputStream(apkFile);
int count = 0;
// 缓存
byte buf[] = new byte[1024];
// 写入到文件中
do {
int numread = is.read(buf);
Log.e("info","创建了目录"+numread);
count += numread;
// 计算进度条位置
progress = (int) (((float) count / length) * 100);
Log.e("InfoProgress",progress+"");
// 更新进度
Message msg = Message.obtain();
msg.what = 2;
msg.obj = progress;
mHandler.sendMessage(msg);
if (numread <= 0) {
// 下载完成
mHandler.sendEmptyMessage(3);
break;
}
// 写入文件
fos.write(buf, 0, numread);
fos.flush();
} while (true);// 点击取消就停止下载.
fos.close();
is.close();
}
} catch (MalformedURLException e) {
e.printStackTrace();
Log.e("info","异常");
} catch (IOException e) {
Log.e("info","异常");
e.printStackTrace();
}
}
}).start();
}
// HttpURLConnection httpConnection = new Http
// HashMap
// map.put("pageNum", pageIndex + "");
// map.put("numPerPage", pageSize);
//
// String sign = DESMD5Utils.dsigndispost(map);
// AbRequestParams params = new AbRequestParams();
// params.put("pageNum", pageIndex + "");
// params.put("numPerPage", pageSize);
// params.put("sign", sign);
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_download);
initView();
btn_download.setOnClickListener(this);
httpClient = new OkHttpClient();
httpClient.setConnectTimeout(5000, TimeUnit.MILLISECONDS);
FormEncodingBuilder builder = new FormEncodingBuilder();
/**
* 添加请求的参数
*/
HashMap
map.put("data.type1", "2"); // 1 ios客户端 2 安卓客户端
map.put("data.versionNo", "130");
String sign = DESMD5Utils.dsigndispost(map);
builder.add("data.type1", "2");
builder.add("data.versionNo", "130");
builder.add("sign", sign);
Log.e("info", sign);
request = new Request.Builder().url(VERSIONUPDATE)
.post(builder.build()).build();
httpClient.newCall(request).enqueue(new Callback() {
@Override
public void onResponse(Response arg0) throws IOException {
if (arg0 != null) {
Message msg = Message.obtain();
msg.what = 1;
msg.obj = arg0.body().string();
;
mHandler.sendMessage(msg);
}
}
@Override
public void onFailure(Request arg0, IOException arg1) {
Log.e("info", "请求失败");
}
});
}
private void initView() {
btn_download = (Button) findViewById(R.id.btn_download);
down_progressBar = (ProgressBar) findViewById(R.id.down_progressBar);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
更多相关文章
- Android学习之使用HttpURLConnection下载文件
- android 文件的压缩和解压
- 83 Android(安卓)Handler ProgressBar 进度条
- Android文件操作放到listview中
- Android(安卓)APK下载安装(自动更新)
- ExpandableListView 使用方法
- gtest的使用 (android)
- android 视频录制 例子源码
- 简单创建Android(安卓)MVVM模式代码