发布最新系统更新包,Android apk 版本更新"/>
android 发布最新系统更新包,Android apk 版本更新
一、修改build.grade文件,版本号和版本名
检测更新可以获取版本名
//获取versionName
private String getVersionName() throws Exception{
PackageManager packageManager = getPackageManager();
PackageInfo packInfo = packageManager.getPackageInfo(getPackageName(), 0);
return packInfo.versionName;
}
二、使用AsyncTask+OkHttp下载
import android.content.Intent;
import android.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Environment;
import android.support.v4.content.FileProvider;
import android.util.Log;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class DownloadTask extends AsyncTask {
private final OkHttpClient mOkHttpClient = new OkHttpClient();
private boolean mSuccess = false;
@Override
protected void onPreExecute() {
super.onPreExecute();
Log.e( "onPreExecute: ","准备前的预操作" );
}
@Override
protected Boolean doInBackground(String... strings) {
try {
String url = strings[0];
Request request = new Request.Builder().url(url).build();
Response response = mOkHttpClient.newCall(request).execute();
if(response!=null && response.isSuccessful()){
mSuccess = true;
dealWithResult(response,url);
}
} catch (IOException e) {
e.printStackTrace();
mSuccess = false;
}
return mSuccess;
}
@Override
protected void onPostExecute(Boolean aBoolean) {
super.onPostExecute(aBoolean);
Log.e( "onPostExecute: ", "doInBackground的结果:"+aBoolean);
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
Log.e( "onProgressUpdate: ","调用onProgressUpdate方法:"+values[0] );
}
/**
* 处理下载结果
* @param response 网络返回结果
* @param url 请求网络的地址
*/
private boolean dealWithResult(Response response,String url) {
int len = 0;
byte[] bytes = new byte[1024];
InputStream is = null;
FileOutputStream fos = null;
try {
//创建下载文件存储的位置(路径+文件名)
String savePath=createFolderAndPath();
File file=new File(savePath,getNameFromUrl(url));
fos=new FileOutputStream(file);
is=response.body().byteStream();
long sum=0; //下载文件的进度
long total=response.body().contentLength(); //下载文件的总长度
while((len = is.read(bytes))!=-1){
fos.write(bytes,0,len);
sum+=len;
int progress=(int)(sum*1.0f/total*100);
publishProgress(progress);
}
installApk(file);
return true;
}catch (Exception e){
更多推荐
android 发布最新系统更新包,Android apk 版本更新
发布评论