在开发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 启动时没有选择升级,但是突然想要手动升级了,就需要调用一下的方法。
其中,可以修改Toast的参数,来修改提示用户信息。
------------------------------------------------------------------------------------------------------------------
接下来简单说一下Dialog的自定义方法
在layout文件夹下的umeng_updata_dialog.xm就是提示框的XML文件,
点击后,打开drawable/emeng_updata_dialog_bg.xml文件
对
<!-- 填充的颜色 -->
< solid android:color ="#FFFFFF" />
<!-- 设置矩形的四个角为弧形 -->
<!-- android:radius 弧形的半径 -->
< corners android:radius ="8dip" />
android:radius为角的弧度,值越大角越圆。我们还可以把四个角设定成不同的角度,方法为:
至此,基本上关于友盟检查更新就已经配置完成,大致常用的参数简单修改的都已经完成了,关于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" />
android:bottomLeftRadius ="20dp"
android:bottomRightRadius ="0dp"
android:topLeftRadius ="1dp"
android:topRightRadius ="20dp" />
至此,基本上关于友盟检查更新就已经配置完成,大致常用的参数简单修改的都已经完成了,关于APP更新的更多设置可以参考友盟官方文档
点击打开链接