您的位置:首页 > 其它

版本更新

2017-06-29 20:39 78 查看
Manifest添加权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

x.utils、gson jar包
@ContentView(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private String targetPath = "";
private ProgressDialog progressDialog;
private Nows.ResultBean result1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
x.view().inject(this);

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File file = Environment.getExternalStorageDirectory();
targetPath = file.getAbsolutePath() + File.separator;
}

progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

}

@Event(R.id.btn_version)
private void btnChick(View v) {
chenckVerson();

}

private void chenckVerson() {
int versionCode = VersionUtil.getVersionCode(this);
RequestParams requestParams = new RequestParams("http://172.18.47.69/checkversion.php");
requestParams.addQueryStringParameter("version", String.valueOf(versionCode));
x.http().get(requestParams, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(final String result) {

Gson gson = new Gson();
Nows nows = gson.fromJson(result, Nows.class);
//是否有更新
if (nows.isSuccess()) {
//有更新
result1 = nows.getResult();
//如果是强制更新
if (result1.isHas_new_version()) {
if (result1.isMust_update()) {

new AlertDialog.Builder(MainActivity.this).setTitle("版本更新").setMessage("升级到最新版本").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.e(TAG, "onClick: "+result1.getUrl() );
updateVersion(result1.getUrl());
dialog.dismiss();
}
}).setCancelable(false).create().show();
} else {
new AlertDialog.Builder(MainActivity.this).setTitle("版本更新").setMessage("是否要更新最新版本").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,result1.getUrl(),Toast.LENGTH_SHORT).show();
updateVersion(result1.getUrl());
dialog.dismiss();
}
}).setNegativeButton("下次再说", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();
}
}).create().show();

}
} else {
Toast.makeText(MainActivity.this, "已经是最新版本", Toast.LENGTH_SHORT).show();
}
}
}

@Override
public void onError(Throwable ex, boolean isOnCallback) {

}

@Override
public void onCancelled(CancelledException cex) {

}

@Override
public void onFinished() {

}
});
}

private void updateVersion(String url) {
targetPath = targetPath + System.currentTimeMillis() + ".apk";
RequestParams params = new RequestParams(url);
// 设置下载保存路径
params.setSaveFilePath(targetPath);
// xutils的文件下载
x.http().get(params, new Callback.ProgressCallback<File>() {
@Override
public void onSuccess(File result) {
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
installApk(result);
}

@Override
public void onError(Throwable ex, boolean isOnCallback) {
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
Log.e(TAG, "onError: "+ex.getMessage() );
Toast.makeText(MainActivity.this, "下载失败", Toast.LENGTH_SHORT).show();
}

@Override
public void onCancelled(CancelledException cex) {

}

@Override
public void onFinished() {

}

@Override
public void onWaiting() {

}

@Override
public void onStarted() {

}

@Override
public void onLoading(long total, long current, boolean isDownloading) {
if (isDownloading) {
progressDialog.setMessage("正在下载...");
progressDialog.show();
progressDialog.setMax((int) total);
progressDialog.setProgress((int) current);
}
}
});
}

/**
* 安装apk
*
* @param file
*/
private void installApk(File file) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
android.os.Process.killProcess(android.os.Process.myPid());
}
}

public class Nows {
private boolean success;
private String message;
private ResultBean result;

public boolean isSuccess() {
return success;
}

public void setSuccess(boolean success) {
this.success = success;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public ResultBean getResult() {
return result;
}

public void setResult(ResultBean result) {
this.result = result;
}

public static class ResultBean {
/**
* has_new_version : true
* must_update : true
* url : http://169.254.149.71/download/jinritoutiao.apk */

private boolean has_new_version;
private boolean must_update;
private String url;

public boolean isHas_new_version() {
return has_new_version;
}

public void setHas_new_version(boolean has_new_version) {
this.has_new_version = has_new_version;
}

public boolean isMust_update() {
return must_update;
}

public void setMust_update(boolean must_update) {
this.must_update = must_update;
}

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}
}
}
 


VersionUtil类

public class VersionUtil {

private static int versionCode=0;

public static int getVersionCode(Context context){
try {
PackageManager packageManager=context.getPackageManager();
String packageName = context.getPackageName();

PackageInfo packageInfo = packageManager.getPackageInfo(packageName, 0);
versionCode = packageInfo.versionCode;

} catch (Exception e) {
e.printStackTrace();
}
return versionCode;
}
}


BaseApplication类

public class BaseApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(BuildConfig.DEBUG);
}
}


修改ip地址,将apk复制到download中,修改download和.php的名称,保持一致
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: