提示用户进行版本更新并且发布通知监控版本下载情况
来源:互联网 发布:电脑程序员工资多少 编辑:程序博客网 时间:2024/06/14 02:12
前言:
在我们发布我们的APP之后避免不了升级和加入一些新的功能,一般都是进入软件之后进行检测并且发布通知去下载。当然在更新问题上也要注意用相同的key进行打包。然后优化,好了,下面我们来看它的实现方法
实现效果截图:
首先上一段代码,查看MainActivity的相关处理:
import com.jay.verioncheck.VersionConfig;import com.jay.versionService.VersionService;import android.os.Bundle;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageManager.NameNotFoundException;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initVersionGlobal();//初始化本地版本和服务器版本checkVersion();//检查版本,发布通知更新}//初始化版本信息,赋值给版本配置public void initVersionGlobal(){try {//获取本地软件版本号VersionConfig.localVersion = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionCode;//获取服务器版本号VersionConfig.serverVersion = 2;} catch (NameNotFoundException e) {e.printStackTrace();}}//检查版本更新public void checkVersion(){//判断本地版本和服务器版本进行比较if(VersionConfig.localVersion < VersionConfig.serverVersion){//有更新的情况,声明提示对话框AlertDialog.Builder alert = new AlertDialog.Builder(this);alert.setTitle("升级").setMessage("发现新版本,建议立即更新使用").setPositiveButton("更新", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//发送请求到下载服务Intent intent = new Intent();intent.setClass(MainActivity.this, VersionService.class);intent.putExtra("titleId", R.string.app_name);startService(intent);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//做一些清理工作}}).setIcon(R.drawable.ic_launcher);//标题iconalert.create().show();//显示该对话框}else{//没有更新的情况}}}
版本控制类:
/*** * 本地版本号控制类 * @author zhanglei * */public class VersionConfig {public static int localVersion = 1;public static int serverVersion = 2;public static String downloadDir = "/downloaddir/";}
VersionService下载服务代码:
import java.io.File;import com.jay.verioncheck.VersionConfig;import com.jay.versionActivity.MainActivity;import com.jay.versionActivity.R;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.app.Service;import android.content.Intent;import android.os.Environment;import android.os.IBinder;/*** * 定义一个下载服务 * @author zhanglei * */public class VersionService extends Service{private int titleId;private File updateDir = null;private File updateFile = null;//通知栏private NotificationManager updateNotificationManager = null;private Notification updateNotification = null;//通知栏跳转Intentprivate Intent updateIntent = null;private PendingIntent updatePendingIntent = null;@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();}@Overridepublic void onStart(Intent intent, int startId) {titleId = intent.getIntExtra("titleId", 0);/*** * 1、android.os.Environment.MEDIA_MOUNTED标记安装的状态 * 2、android.os.Environment.getExternalStorageState() 得到当前软件的状态 */if(android.os.Environment.MEDIA_MOUNTED.equals(android.os.Environment.getExternalStorageState())){//通过当前运行环境得到的目录+配置的下载目录配置成过度文件的路径updateDir = new File(Environment.getExternalStorageDirectory(), VersionConfig.downloadDir);updateFile = new File(updateDir.getPath(), getResources().getResourceName(titleId));}//得到通知管理器,并且赋值通知对象this.updateNotificationManager = (NotificationManager) this.getSystemService(NOTIFICATION_SERVICE);this.updateNotification = new Notification(); //设置下载过程中,点击通知栏,回到主界面 updateIntent = new Intent(this, MainActivity.class); updatePendingIntent = PendingIntent.getActivity(this,0,updateIntent,0);//配置通知内容updateNotification.tickerText = "开始下载";updateNotification.icon = R.drawable.ic_launcher;updateNotification.setLatestEventInfo(this, "下载测试", "0%", updatePendingIntent);//发布通知updateNotificationManager.notify(0, updateNotification);super.onStart(intent, startId);}}
注册下载service:
<!-- 手动注册一个service --> <service android:name="com.jay.versionService.VersionService" android:enabled="true" > </service>
说明:
目前本博客只实现了发布通知。由于暂时没有服务器地址并没有做实时更新的下载监控
实现思路:
代码的可读性很高,注释很多,在此不在多做解释,本实现是app运行之后在Activity之后。在onCreate方法中,拿到本地版本和服务器版本后进行比较。得到是否有更新,如果有就提示对话框进行更新。如果用户更新就发布通知进行更新
源码下载地址:
http://pan.baidu.com/share/link?shareid=456005&uk=1997312776
- 提示用户进行版本更新并且发布通知监控版本下载情况
- Android提示用户更新版本
- iOS ---------- 提示用户版本更新
- ios进行版本更新提示
- Android版本提示更新下载
- Android实现版本更新通知栏下载
- Android版本更新下载提示对话框
- Android 如何通知用户更新app的版本
- Android 如何通知用户更新app的版本
- android客户端版本检测更新,服务下载,通知栏显示
- android客户端版本检测更新,服务下载,通知栏显示
- android 客户端版本检测更新,服务下载,通知栏显示
- Android开发必有功能,更新版本提示,检测是否有新版本更新。下载完成后进行安装。
- Android提示版本更新
- Android提示版本更新
- Android提示版本更新
- Android版本更新提示
- iOS 版本更新提示
- Android本地服务编写实践
- 两种I/O模式
- Windows 8: 将英文系统转换为中文
- java.lang.ClassCastException: android.app.Application cannot be cast to *****
- effect c++ 1 const and enum
- 提示用户进行版本更新并且发布通知监控版本下载情况
- 【Oracle 基础】序列(Sequence)
- C++ 虚函数表解析
- 黑马程序员————学习日记【15】 【交通灯管理系统】
- NYOJ - 传纸条(一)(DP)
- java项目部署在tomcat 表单提交乱码问题
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete
- 由JTA分布式事务Timeout值引发的锁定及解决
- 反射