APP开发之版本更新检测
来源:互联网 发布:百度人工智能平台 编辑:程序博客网 时间:2024/05/22 22:16
大家在开发APP的过程中,一开始的思想和应用的构造都不回太完善需要改进还有为了日后增添更多的功能来丰富用户体验等等,都需要更新APP的版本。这是一个很重要的知识点,那么今天我就来像大家介绍一下如何检测版本的更新。好了,介绍就先到这里,跟以前一样,用代码说事。
1.获取版本名和版本号
首先,在Androidmanifest.xml文件中都会定义有android:versionCode和android:versionName两个参数。大家有的时候都会想把这些参数信息展示给用户,所以我们先来告诉大家如何获取两个参数。在这里,我们需要PackageInfo来获取包的信息,包的信息中含有versionName和versionCode两个参数。
private int getVersionCode(){//获取版本号,与获取版本名类似,这里只获取版本号。 PackageManager packageManager=getPackageManager();//利用packageManager获取包 try { PackageInfo packageInfo=packageManager.getPackageInfo(getPackageName(), 0);//利用packageManager获取包的信息。 // int versionCode=packageInfo.versionCode;//获取版本号 return versionCode; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace();//没有找到相关的包名则抛出异常 } return -1;//错误返回-1 }
2.好了,我们已经完成了版本名和版本号的获取,这两个东西就是用于我们的版本更新的检测。当用户使用的版本与我们服务器上的版本匹配不一致的时候,我们就可以检测出更新了,所以我们接下来完成版本的检测。大家先想想,版本更新的检测能不能在主线程里面进行呢?答案是否定的。为什么呢?因为主线程运行超过五秒就会阻塞,这个时候我们需要异步加载数据了。让我们看看代码的实现。
private void versionCheck(){//版本检测,从服务器获取版本信息进行校验 final long startTime=System.currentTimeMillis();//网络访问初始时间 final Message message=Message.obtain(); new Thread(){//异步线程加载数据 public void run(){ HttpURLConnection httpURLConnection=null; try { URL url=new URL("196.168.1.1");//这里最好用IP地址 不用localhost,服务器地址 httpURLConnection=(HttpURLConnection)url.openConnection();//默认返回的是urlConnecttion我们需要的是HttpURLConnection httpURLConnection.setRequestMethod("GET");//这里的请求方式我们选择GET或者POST httpURLConnection.setConnectTimeout(5000);//网络连接超时5秒则抛出异常 httpURLConnection.setReadTimeout(5000);//网络连接上但服务器响应时间异常。 httpURLConnection.connect();//连接服务器 int respondCode=httpURLConnection.getResponseCode();//响应码默认为200正常 if(respondCode==200){ InputStream inputStream=httpURLConnection.getInputStream();//从服务器获取输入流,在这里我新建了一个类专门弄IO流的。 String result = AppStreamUtils.readInputStream(inputStream); //读取解析JSON数据 JSONObject jsonObject=new JSONObject(result); mVersionName=jsonObject.getString("versionName");//mVersionCode是要赋值给xml文件的一个TextView控件。 mVersionCode=jsonObject.getInt("versionCode"); if(mVersionCode>getVersionCode()){//如果服务器的Code大于本地dCode,则需要升级 message.what=CODE_DIALOG_UPDATE;//这里我们用Handle发送消息。 } else{ message.what=CODE_ENTER_HOMEACTIVITY; } } } catch (MalformedURLException e) { e.printStackTrace();//当URL地址异常时抛出异常 message.what=CODE_ERROR_URL; } catch (IOException e) { e.printStackTrace();//网络异常时抛出异常 message.what=CODE_ERROR_IOE; } catch (JSONException e) { e.printStackTrace();//当传递的不是严格的JSON格式时抛出异常,JSON解析失败 message.what=CODE_ERROR_JSON; }finally { mHandler.sendMessage(message); if(httpURLConnection!=null) { httpURLConnection.disconnect();//断开网络连接请求 } } } } }.start();//线程start }好了,关于版本更新的检测就先介绍到这里,希望对大家有所帮助。
0 0
- APP开发之版本更新检测
- iOS开发之检测App更新
- iOS开发之检查APP版本更新
- iOS开发之检查APP版本更新
- App检测版本更新 iOS
- iOS App检测版本更新
- IOS检测版本更新(***为app id)
- IOS检测版本更新(***为app id)
- 检测app版本更新根据AppStore
- 检测app版本更新根据AppStore
- iOS APP如何实现版本检测更新
- iOS APP如何实现版本检测更新
- APP开发实战135-APP版本更新之APP和服务器交互
- android APP检测版本更新以及后台服务更新
- android APP检测版本更新以及后台服务更新
- iOS开发 APP如何实现检测更新
- iOS开发 APP如何实现检测更新
- iOS开发检测AppStore版本更新
- 关于GCD 的全解(转载自http://blog.csdn.net/wangqiuyun/article/details/19198467)
- Run Configurations
- 将struts2和hibernate结合实现一个简单的小程序(二)
- 客户端数据存储 localStorage sessionStorage
- Android调用.NET webservice实现用户登录验证
- APP开发之版本更新检测
- CSS预处理器
- 手把手教你用Python抢票
- Cloudera Manager离线安装与卸载【按照此文章可以卸载干净,然后执行cm5的bin文件重新安装,不推荐此安装方法】
- 单调队列 hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- 关于java中的多态的一些小总结
- UILabel控件属性
- 如何用友盟做分享模块
- 分布式机器学习的故事