版本更新(简单的方法)
2017-09-17 10:29
176 查看
注意:因为使用的xUtils来进行下载apk,所以要在Application里面onCreate()方法中进行加上 x.Ext.init(this); x.Ext.setDebug(true); //主类 public class MainActivity extends AppCompatActivity { String urlVersion = "http://www.地址.com"; String urlApk = 自己定义要更新的地址 private ProgressDialog pd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getServierVersion(urlVersion); } public void getServierVersion(String url){ new AsyncTask<String,View,String>(){ @Override protected void onPostExecute(String s) { super.onPostExecute(s); if(CommonUtil.getAppVersion(MainActivity.this) < 2){ showDialog(CommonUtil.getAppVersionName(MainActivity.this),"2.1.0"); } } @Override protected String doInBackground(String... params) { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } return null; } }.execute(url); } public void showDialog(String oldName, String newName){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("版本更新") .setMessage("当前最新版本为"+newName+",手机版本为"+oldName+",是否跟新") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { pd = new ProgressDialog(MainActivity.this); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setMessage("正在更新..."); pd.setMax(100); downLoadApk(urlApk); } }).setNegativeButton("暂不更新", null).show(); } private void downLoadApk(String urlApk) { //设置下载地址 RequestParams params = new RequestParams(urlApk); //设置下载文件的路径 开始时要注意判断 sd卡状态是否可用 本demo省略 //可以用,也可以不用 // params.setSaveFilePath(Environment.getExternalStorageDirectory()+"/myapp/"); params.setSaveFilePath(getCacheDir()+"/myapp/"); //设置文件名 params.setAutoRename(true); //使用ProgressCallback进行文件下载 x.http().get(params, new Callback.ProgressCallback<File>() { @Override public void onSuccess(File result) { Toast.makeText(MainActivity.this,"下载成功,准备安装",Toast.LENGTH_SHORT).show(); Log.i("==========", "onSuccess: " + result); //apk下载完成后,调用系统的安装方法 日考题 提供的apk有问题的 不能安装 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(result), "application/vnd.android.package-archive"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } @Override public void onError(Throwable ex, boolean isOnCallback) { Log.i("==========", "onError: "); Toast.makeText(MainActivity.this,"apk下载失败",Toast.LENGTH_SHORT).show(); } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { Log.i("==========", "onError: "); pd.cancel(); } @Override public void onWaiting() { } @Override public void onStarted() { } @Override public void onLoading(long total, long current, boolean isDownloading) { a625 //当前进度和文件总大小 Log.i("==========","current:"+ current +",total:"+total); //让进度条按 XX/100的格式显示 pd.setProgress((int) (current*100/total)); pd.show(); } }); } } //工具类
public class CommonUtil { //获取当前版本号 public static int getAppVersion(Context context) { try { PackageManager packageManager = context.getPackageManager(); PackageInfo info = packageManager.getPackageInfo(context.getPackageName(),0); int versionCode = info.versionCode; return versionCode; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return 1; } //获取当前版本应用的名字 public static String getAppVersionName(Context context){ String versionName =""; PackageManager packageManager = context.getPackageManager(); try { PackageInfo info = packageManager.getPackageInfo(context.getPackageName(),0); versionName = info.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return versionName; } }
相关文章推荐
- 版本更新的使用方法
- 比较简单实用的使用正则三种版本的js去空格处理方法
- windows server 2003中使用cocos2d-x,提示OpenGL版本为1.1,要更新驱动,解决方法
- Android studio最简单的更新方法
- git 更新到最新版本的方法
- SQL2008安装提示"Microsoft visual studio 2008早期之前的版本"解决(这是我认为最简单有效的方法)
- 版本控制之Cornerstone Svn简单使用指南(持续更新)
- Oracle 更新 OPatch 工具版本 的方法 说明
- mac os更新SVN版本方法
- Code First 更新数据库结构(简单实现方法:会删除原来的数据)
- Linux更新Python版本及修改python默认版本的方法
- 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!
- 高逼格,超简单,实现App自动更新,一个方法搞定
- Win10 9879版本更新失败提示0x8024600c的解决方法
- Android模拟内存紧张,应用被杀死如何模拟应用程序被杀掉? 更新:Daniel Lew指出,最简单的方法是在DDMS中点击”Stop Porcess”杀掉你的程序,在你调试程序的时候可以这样做。
- Android Studio简单更新方法
- jquery中,某些写法后来更新导致版本不支持的替代方法
- 使用yum更新php的版本方法
- 手动更新Wamp中php版本的方法
- 【书籍简评】《Python计算机视觉编程》还算可以的入门书,简单介绍了CV中的常用方法,但由于代码版本过老,有一些用3.6跑不通。