Android 提示版本更新的实现

简介:

应用软件更新一般步骤:

1、首先检测网络是否存在,如果存在进行版本信息检测

[java]  view plain copy
  1. NetworkInfo networkInfo = NetInfo.getNetworkInfo(getActivity());  
  2. if (networkInfo != null) {  
  3.     state = networkInfo.getState();  
  4.     typeName = networkInfo.getTypeName();  
  5.     apnName = networkInfo.getExtraInfo();  
  6.       
  7.     if (state == NetworkInfo.State.CONNECTED) {  
  8.         if (typeName.equals("MOBILE")) {  
  9.             if (apnName.equals("ctnet") || apnName.equals("cmnet") || apnName.equals("internet")) {  
  10.                 checkUpdate();  
  11.             } else {  
  12.                 setNet();  
  13.             }  
  14.         } else {  
  15.             checkUpdate();  
  16.         }  
  17.     } else {  
  18.         Message message = new Message();  
  19.         message.what = 102;  
  20.         handler.sendMessage(message);  
  21.     }  
  22. else {  
  23.     Message message = new Message();  
  24.     message.what = 102;  
  25.     handler.sendMessage(message);  
  26. }  

2、检测当前版本的信息AndroidManifest.xml-->manifest-->android:versionName,我使用的是

[html]  view plain copy
  1. android:versionCode="99"  
  2. android:versionName="3.0.0">  

3、从服务器获取版本号(版本号存在于xml文件中)并与当前检测到的版本进行匹配,如果不匹配,提示用户进行升级,如果匹配则进入程序主界面。

[java]  view plain copy
  1. private void checkUpdate() {  
  2.     //统计用户打开客户端的量  
  3.     UserController.commitUserOpenInfo(getActivity());  
  4.     //获取服务器端apk版本号  
  5.     CommonController.getInstance().getAppVersionCode(getActivity(), versionCodehandler);//获取版本号  
  6. }  

4、当提示用户进行版本升级时,如果用户点击了确定,系统将自动从服务器上下载并进行自动升级,如果点击取消将进入程序主界面。

[java]  view plain copy
  1. private Handler versionCodehandler = new Handler(){  
  2.     public void handleMessage(android.os.Message msg) {  
  3.         versionCode = (Integer)msg.obj;//返回的数值为版本号  
  4.         if(pinfo.versionCode < versionCode) {  
  5.             CommonController.getInstance().getAppUpdates(getActivity(), updateInfohandler);  
  6.         }   
  7.         System.out.println("versionCode = " + versionCode);  
  8.     };    
  9. };  

去下载更新

[java]  view plain copy
  1. private Handler updateInfohandler = new Handler(){  
  2.     public void handleMessage(android.os.Message msg) {  
  3.         updateInfo = (String)msg.obj;  
  4.         updateInfo = updateInfo.replace("\\n""\n");  
  5.           
  6.         new AlertDialog.Builder(getActivity()).setTitle("提示").setMessage(updateInfo)      
  7.            .setPositiveButton("确定"new DialogInterface.OnClickListener() {       
  8.               @Override       
  9.                public void onClick(DialogInterface dialog, int which) {   
  10.                    openURL(DamaiDataAccessApi.APK_DOWNLOAD_ADDRESS);//下载更新  
  11.                }       
  12.            }).setNegativeButton("取消"new DialogInterface.OnClickListener() {   
  13.                  
  14.                public void onClick(DialogInterface dialog, int whichButton) {       
  15.                     handler.sendEmptyMessage(0);  
  16.                }   
  17.            })  
  18.            .setCancelable(false)  
  19.            .create().show();  
  20.     };    
  21. };  

更新实现方式

[java]  view plain copy
  1. final void openURL(String url) {  
  2.     launchIntent(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));  
  3. }  
  4.   
  5. void launchIntent(Intent intent) {  
  6.     if (intent != null) {  
  7.       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);  
  8.       try {  
  9.           startAnimaActivity.startActivity(intent);  
  10.               try {  
  11.                   //这个是程序中跳转到首页代码,这里加上是为了手机在浏览器页面点击返回的时候能够回到自己的客户端首页  
  12.                   FragmentTransaction ft = getFragmentManager().beginTransaction();  
  13.                   AnimationUtil.startFragmentsAnimationWithFadeInFadeOut(ft);  
  14.                   MainFragment mf = new MainFragment();  
  15.                   ft.add(R.id.fragmentRoot, mf, FragmentFlagNameList.MAIN);  
  16.                   ft.addToBackStack(FragmentFlagNameList.MAIN);  
  17.                   ft.commit();  
  18.                 } catch (Exception e) {  
  19.                     // TODO: handle exception  
  20.                 }  
  21.       } catch (ActivityNotFoundException e) {  
  22.       }  
  23.     }  
  24. }  
相关文章
|
Android开发
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
|
Android开发 容器
Android实现面包屑效果,支持Fragment联动
Android实现面包屑效果,支持Fragment联动
|
Android开发
Android实现连线题效果
Android实现连线题效果
|
Android开发
Android实现调用系统相机录像及实现录音
Android实现调用系统相机录像及实现录音
587 0
|
移动开发 JavaScript Android开发
通过howler.js实现在Android下的微信浏览器自动播放音频
通过howler.js实现在Android下的微信浏览器自动播放音频
410 0
通过howler.js实现在Android下的微信浏览器自动播放音频
|
存储 Dart Java
【Flutter】packages思维以及使用Java添加Android平台特定的实现在Flutter框架里的体现和运用
【Flutter】packages思维以及使用Java添加Android平台特定的实现在Flutter框架里的体现和运用
|
缓存 JSON Java
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
340 1
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
|
数据库 Android开发
android 多级下拉菜单实现教程 greendao使用
android 多级下拉菜单实现教程 greendao使用
170 0
android 多级下拉菜单实现教程 greendao使用
|
XML 开发工具 Android开发
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
266 0
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
|
XML Android开发 数据格式
Android自定义控件(十一)——自定义ViewGroup实现LinearLayout
Android自定义控件(十一)——自定义ViewGroup实现LinearLayout
422 0