版本更新
2017-09-13 15:49
101 查看
package com.exbawei.liteli.xutils; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Environment; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.TextView; import android.widget.Toast; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x; import java.io.File; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv= (TextView) findViewById(R.id.tv); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { x.Ext.init(getApplication()); x.http().get(new RequestParams("http://mapp.qzone.qq.com/cgi-bin/mapp/mapp_subcatelist_qq?yyb_cateid=-10&categoryName=%E8%85%BE%E8%AE%AF%E8%BD%AF%E4%BB%B6&pageNo=1&pageSize=20&type=app&platform=touch&network_type=unknown&resolution=412x732"), new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { try { JSONObject jsonObject = new JSONObject(result); JSONArray jsonArray = jsonObject.getJSONArray("app"); JSONObject jo = jsonArray.getJSONObject(0); String url = jo.getString("url"); String version = jo.getString("versionName"); Log.i("xxx", "url:" + url + ",versionName:" + version); String versionName = getVersionName(); System.out.println(versionName); /*if (version.compareTo(versionName) > 0) { showChoiseDialog(url); }*/ showChoiseDialog(url); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } }); } /** * 显示更新选择对话框 * * @param url */ private void showChoiseDialog(final String url) { android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this); android.app.AlertDialog dialog = null; builder.setTitle("版本更新"); builder.setMessage("检测到新版本,是否下载更新?"); builder.setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { downLoadApk(url); } }); builder.setNegativeButton("否", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); dialog = builder.create(); dialog.setCanceledOnTouchOutside(false); dialog.show(); } /** * 从服务器中下载APK */ private void downLoadApk(String path) { RequestParams params = new RequestParams(path); //自定义保存路径 Environment.getExternalStorageDirectory() sdcard 根目录 params.setSaveFilePath(Environment.getExternalStorageDirectory() + "/app/"); //自动为文件命令 params.setAutoRename(true); x.http().post(params, new Callback.ProgressCallback<File>() { //网络请求成功时回调 @Override public void onSuccess(File result) { Toast.makeText(MainActivity.this, "下载成功", Toast.LENGTH_SHORT).show(); //apk下载完成后 调用系统的安装方法 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(result), "application/vnd.android.package-archive"); startActivity(intent); 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() { } //网络请求之前回调 @Override public void onWaiting() { } //网络请求开始的时候回调 @Override public void onStarted() { } //下载的时候不断回调的方法 @Override public void onLoading(long total, long current, boolean isDownloading) { //文件总大小和当前进度 Log.i("xxx", total + "," + current); } }); } /** * 获取版本名称 */ private String getVersionName() { // 获取packagemanager的实例 PackageManager packageManager = getPackageManager(); // getPackageName()是你当前类的包名,0代表是获取版本信息 PackageInfo info = null; try { info = packageManager.getPackageInfo(getPackageName(), 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } String versionName = info.versionName; return versionName; } /** * 获取版本号 * * @return * @throws Exception */ public String getVersionCode() { // 获取packagemanager的实例 PackageManager packageManager = getPackageManager(); // getPackageName()是你当前类的包名,0代表是获取版本信息 PackageInfo packInfo = null; try { packInfo = packageManager.getPackageInfo(getPackageName(), 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } String versionCode = String.valueOf(packInfo.versionCode); return versionCode; } }
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
compile 'org.xutils:xutils:3.5.0' compile 'org.jsoup:jsoup:1.9.2'
相关文章推荐
- Android 版本变更概要(1.5-4.2)持续更新中。。。。。。。
- ios coreData 根据应用版本升级进行更新
- Swift更新至1.0版本
- SQLServer2000辅助工具版本更新了
- 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!
- ActiveX控件版本自动更新问题的解决方案
- 【2016年终总结下】坚持52次版本更新,只为不断提高开发者的使用体验
- Visual Assist X V10.4.1649 的破解文件(2008.09.09 更新 RC版本)
- SumlimeText 3 2017年9月更新后可用的License 版本3143
- yahoo相册批量下载工具版本已经更新v1.2
- android应用版本自动更新
- 更新visual studio 古老的新闻订阅为最新的版本
- Mac OSX 10.10 - Yosemite更新svn版本
- 小白马卫士项目总结之版本更新
- Android 检测版本更新
- 为程序添加版本自动更新功能(转+详细分析)
- 更新日期 2017年9月15日 - Citrix桌面虚拟化平台-交付推荐版本及相关hotfix
- Winform版本发布更新
- ios版本更新
- iOS自动检测版本更新