版本更新
2017-06-29 20:39
78 查看
Manifest添加权限
x.utils、gson jar包
VersionUtil类
BaseApplication类
修改ip地址,将apk复制到download中,修改download和.php的名称,保持一致
<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的名称,保持一致
相关文章推荐
- iOS 检测版本更新
- 手机开发之web方式----启动程序检查更新版本
- swf 更新后,客户端不需要清空缓存即可查看最新版本
- SmartCVS笔记-从远程仓库更新最新版本的文件以及查看文件的历史版本
- 对于unity3d 对于热更新的思考!!!(版本管理)
- IE7、IE8、IE9、IE10后各版本的更新内容和各版本的差别
- 谷歌浏览器提示Flash版本过低,要求更新或运行一次
- ios版本更新
- 更新centos的python版本
- node更新版本后sass无法编译解决办法
- Android应用开发之版本更新你莫愁
- app版本更新提醒方案
- Android版本更新
- 版本更新
- iOS 版本自动更新
- 社交开源系统ThinkSNS V4.6.4更新,版本更新提示功能上线
- android版本更新
- Sublime Text 3.0发布,较上一版本有了大量更新
- 直接拿来用的版本更新(Android 兼容7.0)
- ActiveX控件版本自动更新问题的解决方案