Android自动检测版本及自动升级
16lz
2021-01-23
Android自动检测版本及自动升级
[日期:2011-10-21] | 来源:Linux社区 作者:furongkang |
步骤:
1.检测当前版本的信息AndroidManifest.xml-->manifest-->android:versionName。
2.从服务器获取版本号(版本号存在于xml文件中)并与当前检测到的版本进行匹配,如果不匹配,提示用户进行升级,如果匹配则进入程序主界面。
3.当提示用户进行版本升级时,如果用户点击了确定,系统将自动从服务器上下载并进行自动升级,如果点击取消将进入程序主界面。
效果图:
获取当前程序的版本号:
- /*
- *获取当前程序的版本号
- */
- privateStringgetVersionName()throwsException{
- //获取packagemanager的实例
- PackageManagerpackageManager=getPackageManager();
- //getPackageName()是你当前类的包名,0代表是获取版本信息
- PackageInfopackInfo=packageManager.getPackageInfo(getPackageName(),0);
- returnpackInfo.versionName;
- }
- /*
- *用pull解析器解析服务器返回的xml文件(xml封装了版本号)
- */
- publicstaticUpdataInfogetUpdataInfo(InputStreamis)throwsException{
- XmlPullParserparser=Xml.newPullParser();
- parser.setInput(is,"utf-8");//设置解析的数据源
- inttype=parser.getEventType();
- UpdataInfoinfo=newUpdataInfo();//实体
- while(type!=XmlPullParser.END_DOCUMENT){
- switch(type){
- caseXmlPullParser.START_TAG:
- if("version".equals(parser.getName())){
- info.setVersion(parser.nextText());//获取版本号
- }elseif("url".equals(parser.getName())){
- info.setUrl(parser.nextText());//获取要升级的APK文件
- }elseif("description".equals(parser.getName())){
- info.setDescription(parser.nextText());//获取该文件的信息
- }
- break;
- }
- type=parser.next();
- }
- returninfo;
- }
- publicstaticFilegetFileFromServer(Stringpath,ProgressDialogpd)throwsException{
- //如果相等的话表示当前的sdcard挂载在手机上并且是可用的
- if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
- URLurl=newURL(path);
- HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
- conn.setConnectTimeout(5000);
- //获取到文件的大小
- pd.setMax(conn.getContentLength());
- InputStreamis=conn.getInputStream();
- Filefile=newFile(Environment.getExternalStorageDirectory(),"updata.apk");
- FileOutputStreamfos=newFileOutputStream(file);
- BufferedInputStreambis=newBufferedInputStream(is);
- byte[]buffer=newbyte[1024];
- intlen;
- inttotal=0;
- while((len=bis.read(buffer))!=-1){
- fos.write(buffer,0,len);
- total+=len;
- //获取当前下载量
- pd.setProgress(total);
- }
- fos.close();
- bis.close();
- is.close();
- returnfile;
- }
- else{
- returnnull;
- }
- }
更多相关文章
- Android应用程序包含的各个文件
- Android Studio 创建 aar文件 并 引用
- Android中String资源文件的String.format方法(java)
- 最新android sdk版本号和sdk的对应关系
- Android中扫描多媒体文件操作详解
- Android名词解释之什么是APK文件
- Android 逆向apk的配置文件
- Android 根文件系统启动过程。
- Android SDK与API版本的对应关系