android apk的更新下载

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<String, String> map = new HashMap<String, String>();
// 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<String, String> map = new HashMap<String, String>();


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


}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值