博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android】友盟的自动更新组件
阅读量:6493 次
发布时间:2019-06-24

本文共 1885 字,大约阅读时间需要 6 分钟。

前言

又好又专业的服务能帮开发者省很多时间。一开始做项目也准备自己来统计数据、自己做自动更新,随着使用友盟服务的时间增加,渐渐放弃了这种想法,转而研究如何更充分的使用,这里分享一下使用自动更新组件的心得。

 

声明
欢迎转载,但请保留文章原始出处:)
博客园:http://www.cnblogs.com

农民伯伯: http://over140.cnblogs.com 

正文

一、缺少res导致不能升级的问题

由于缺少了解,官网文档也没用提醒,仅仅拷贝了SDK的jar到工程里,一直不知道到底升级功能是否已经实现,关键是也不报错!今天又拿出来测试了一下,监听了一下UmengUpdateListener接口,发现客户端已经检测到了更新,但是没用弹出更新的对话框,然后就注意到了如下log:

W/ResourceType(7881): No known package when getting value for resource number 0xffffffff 

虽然没用显示和umeng有关系,还是重新更新了一下jar,并且反编译了一下jar查看了一下代码,并检查了一下sdk,果然发现少拷贝了资源文件,res下还有drawable、layout、string还有东西,拷贝进项目即可!吐槽一下,好丑 - - # ,然后就有了下面:

 

二、自定义升级对话框

    
/*
* 版本检测 
*/
    
private 
void checkVersion() {
        UmengUpdateAgent.setUpdateOnlyWifi(
true);
        UmengUpdateAgent.setUpdateAutoPopup(
false);
        UmengUpdateAgent.setUpdateListener(
new UmengUpdateListener() {
            @Override
            
public 
void onUpdateReturned(
int updateStatus,
                    UpdateResponse updateInfo) {
                
if (updateStatus == 
0 && updateInfo != 
null) {
                    showUpdateDialog(updateInfo.path, updateInfo.updateLog);
                }
                
//
 case 0: 
//
 has update
                
//
 case 1: 
//
 has no update
                
//
 case 2: 
//
 none wifi
                
//
 case 3: 
//
 time out
            }
        });
        UmengUpdateAgent.update(
this);
    }
    
private 
void showUpdateDialog(final String downloadUrl, final String message) {
        AlertDialog.Builder updateAlertDialog = 
new AlertDialog.Builder(
this);
        updateAlertDialog.setIcon(R.drawable.app_icon);
        updateAlertDialog.setTitle(R.
string.app_name);
        updateAlertDialog.setMessage(getString(R.
string.update_hint, message));
        updateAlertDialog.setNegativeButton(R.
string.update_ok,
                
new DialogInterface.OnClickListener() {
                    @Override
                    
public 
void onClick(DialogInterface dialog, 
int which) {
                        dialog.dismiss();
                        
try {
                            startActivity(
new Intent(Intent.ACTION_VIEW, Uri
                                    .parse(downloadUrl)));
                        } 
catch (Exception ex) {
                        }
                    }
                }).setPositiveButton(R.
string.dialog_no, 
null);
        
if (!isFinishing())
            updateAlertDialog.show();
    }

 

三、参考

官网文档: 

 

结束

本来没打算用umeng的统计组件,主要是因为近期博客园把文件下载给封了(必须登录),然后就不得不找其他办法了。

你可能感兴趣的文章
给一个不多于5位的整数,判断位数并逆序输出
查看>>
Linux命令行 (一)
查看>>
Java提取字符串中的手机号
查看>>
Linux基础命令---间歇执行程序watch
查看>>
cisco路由器常用命令
查看>>
数据库查询构建控件集Active Query Builder
查看>>
textarea中的文字自动换行问题
查看>>
mongodb-2.0.5的安装与启动
查看>>
VMware虚拟机出现“需要整合虚拟机磁盘”的解决方法
查看>>
几种常用RAID的特性
查看>>
扎克伯格密邮遭曝光你的邮件系统还安全吗?
查看>>
LNMP环境搭建网站
查看>>
命令行压缩解压7z
查看>>
ASA防火墙 NAT新版老版的配置方法对比
查看>>
maven依赖总结
查看>>
用户追踪-cookie技术
查看>>
RHEL6.3配置DNS服务器(2) 配置缓存域名服务器和转发
查看>>
程序员开心一下
查看>>
leetcode_linearList02
查看>>
360笔试---session cookie的区别
查看>>