关闭

小白编程之使用友盟自动更新

353人阅读 评论(0) 收藏 举报
在开发APP过程当中,为实现APP更新时及时提示用户更新,因此使用友盟更新   http://www.umeng.com/component_update  在实际使用过程中,发现非常方便,并且个人手机上发现有多款APP 使用的是相类似的更新提示Dialog,目测应该是属于友盟更新,为方便以后使用方便,特此将使用过程小白化记录。

-sdk下载
友盟自动更新  http://dev.umeng.com/auto-update/android-doc/introduction  

1.将下载的ZIP解压,将其中的libs文件夹合并到本地工程libs子目录下。
Eclipse用户右键工程根目录,选择Properties -> Java Build Path -> Libraries,然后点击Add External JARs... 选择指向jar的路径,点击OK,即导入成功。
android studio用户直接直接复制到 Libs 然后右键选择 Add As Libarry 即导入成功。

2.将SDK提供的res文件夹拷入工程目录下, 和工程本身res目录合并。请不要随便删除其中的文件。

3.配置AndroidManifest.xml

打开AndroidManifest.xml,添加SDK需要的权限到<manifest>标签下:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</pre><div><span style="font-family:Courier New;">android.permission.WRITE_EXTERNAL_STORAGE</span> 权限允许将下载的apk保存到sd卡中。<code>android.permission.ACCESS_NETWORK_STATE</code> 权限允许检查网络状态,从而根据不同网络环境决定何种下载策略,务必添加该权限。</div><div></div><div>4.添加APPKEY和渠道到<code><application></code>标签下:</div><div></div><pre class="html" name="code"><meta-data android:value="YOUR APP KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>

YOUR APP KEY 即开发的APP上传友盟后,友盟提供的KEY 
UMENG_CHANNEL:用来标注应用推广渠道,不同渠道可以上传不同更新包,您可以使用20位以内的英文和数字为渠道定名,替换value中的"Channel ID"。如果不改动,将代表默认渠道。(特别提示:如果需要使用友盟自动更新多渠道更新,必须先集成友盟统计SDK

5.添加Service和Activity到<application>标签下:

<service
    android:name="com.umeng.update.net.DownloadingService"
    android:process=":DownloadingService" >
</service>
<activity 
    android:name="com.umeng.update.UpdateDialogActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>

包名可能会出现不一致的情况,在配置时检查一下
-----------------------------------------------------------------------------------------------------------------------
至此,自动更新的配置已经完成,为了使程序在启动是即可以自检是否有更新可用,需要在 应用程序入口Activity里的OnCreate()方法中调用

public void onCreate(Bundle  savedInstanceState) {
    super.onCreate(savedInstanceState);
    UmengUpdateAgent.update(this);


完成以上配置后,APP在启动后,当程序的VersionCode 低于友盟后台的VersionCode时,会在APP启动后提示用户更新,Android studio 用户的VersionCode 在Builde.Gradle 中配置





-----------------------------------------------------------------------------------------------------------------
以下为部分自定义功能,





 上图中,自定义了Button的样式,并且给TextView 添加了点击时的效果,因为在APP使用过程中,如果用户在APP 启动时没有选择升级,但是突然想要手动升级了,就需要调用一下的方法。

 tx= (TextView) findViewById(R.id.tx);
        tx.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                UmengUpdateAgent.setUpdateAutoPopup(false);
                UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() {
                    @Override

                    public void onUpdateReturned(int updateStatus, UpdateResponse updateInfo) {
                        switch (updateStatus) {
                            case UpdateStatus.Yes: // has update
                                UmengUpdateAgent.showUpdateDialog(getApplicationContext(), updateInfo);
                                break;
                            case UpdateStatus.No: // has no update
                                Toast.makeText(getApplicationContext(), "当前已是最新版本!", Toast.LENGTH_SHORT).show();
                                break;
                            case UpdateStatus.NoneWifi: // none wifi
                                Toast.makeText(getApplicationContext(), "没有wifi连接, 只在wifi下更新", Toast.LENGTH_SHORT).show();
                                break;
                            case UpdateStatus.Timeout: // time out
                                Toast.makeText(getApplicationContext(), "超时", Toast.LENGTH_SHORT).show();
                                break;
                        }
                    }

                });UmengUpdateAgent.forceUpdate(getApplicationContext());

            }
        });

其中,可以修改Toast的参数,来修改提示用户信息。
------------------------------------------------------------------------------------------------------------------
接下来简单说一下Dialog的自定义方法



在layout文件夹下的umeng_updata_dialog.xm就是提示框的XML文件,
 <LinearLayout
        android:id="@+id/umeng_update_frame"
        android:layout_width="280dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/umeng_update_dialog_bg"   //这一行为Dialog边框样式设置
        android:paddingBottom="8dp"
        android:orientation="vertical" >

点击后,打开drawable/emeng_updata_dialog_bg.xml文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <corners android:radius="8dp" />
    <solid  android:color="#FFFFFF"/>
</shape>
  
    对
<corners android:radius="8dp" />
参数修改,可以改变边角半径,参数为0则表示直角
 <!-- 填充的颜色 -->
   <solid android:color="#FFFFFF" />
  <!-- 设置矩形的四个角为弧形 -->
   <!-- android:radius 弧形的半径 -->
     <corners android:radius="8dip" />
android:radius为角的弧度,值越大角越圆。我们还可以把四个角设定成不同的角度,方法为:
 
 <corners
        android:bottomLeftRadius="20dp"
         android:bottomRightRadius="0dp"
         android:topLeftRadius="1dp"
         android:topRightRadius="20dp" />



至此,基本上关于友盟检查更新就已经配置完成,大致常用的参数简单修改的都已经完成了,关于APP更新的更多设置可以参考友盟官方文档
  点击打开链接

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:869次
    • 积分:47
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档