版本更新(简单的方法)
来源:互联网 发布:数据挖掘工 编辑:程序博客网 时间:2024/06/14 02:23
注意:因为使用的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) { //当前进度和文件总大小 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; }}
阅读全文
0 0
- 版本更新(简单的方法)
- 简单的版本更新
- 简单的版本更新
- 版本更新的方法
- 检查版本更新的方法
- 简单的版本更新的实现
- 安卓版本更新的简单Demo
- 安卓版本更新的简单Demo
- 安卓版本更新简单的Demo
- Android 简单的检查app版本更新
- 一个简单的检查版本更新
- 版本更新简单使用
- 版本更新简单实现
- git 更新到最新版本的方法
- 使用yum更新php的版本方法
- iOS 版本更新的两种方法
- iOS版本更新的实现方法
- android版本检测更新的方法2
- iOS Demo系列:顺滑的逐句朗读UITableView
- C/C++中volatile关键字解析
- vim入门之编辑
- Leetcode 之 Palindrome Number
- vim的树形菜单NERDTREE的设置
- 版本更新(简单的方法)
- EEPROM和flash的区别
- java 类型后面三个点(String...)和数组(String[])的区别
- JVM 监控工具和调优工具
- Solr(三)——solr集群SolrCloud
- 35. Search Insert Position
- WCF 入门 Demo
- 查看Genymotion模拟器SDcard内的文件内容
- 权限管理——RBAC模型总结