百度自动更新SDK的使用

对于百度强制使用自家自动更新sdk不作评论,这里只是记录其使用方式。

其sdk有四种更新方式:1.静默更新 2.默认ui更新 3.自定义ui更新 4.通过百度助手更新

为了达到应用更新模块的统一性,我选择了第三种,自定义ui更新。这个就看大家的选择了,四种方式都可以。

一:首先到官网下载自动更新sdk:http://app.baidu.com/docs?id=19,下载的时候除了自动更新sdk,还会强制下载数据统计和广告联盟两个模块。

二:下载完成后解压,里面有对应的说明文档。

三:BDIntegrationSDK_LibProject把这个库工程加入到ide,然后自家的项目加入这个库工程。我到这里时,很奇怪,写更新代码时总是找不到相关类库,必须把BDAutoUpdate_APPX_SDK_20150826.jar 和 need_lib.jar 这两个jar包导入了项目才解决,但是用SDK自带的Demo,则不需要导入这两个jar包。

配置AndroidManifest文件:

        <!-- 百度appid和appkey 需要去百度申请 -->
        <meta-data android:name="BDAPPID" android:value="******"/>
        <meta-data android:name="BDAPPKEY" android:value="**************"/>
        
        <!-- 自动更新SDK -->
        <activity
            android:name="com.baidu.autoupdatesdk.ConfirmDialoigActivity"
            android:exported="false"
            android:screenOrientation="sensor"
            android:theme="@style/bdp_update_dialog_style_fullscreen" />

        <receiver
            android:name="com.baidu.autoupdatesdk.receiver.BDBroadcastReceiver"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.baidu.autoupdatesdk.ACTION_NEW_UPDATE" />
                <action android:name="com.baidu.autoupdatesdk.ACTION_DOWNLOAD_COMPLETE" />
                <action android:name="com.baidu.autoupdatesdk.ACTION_NEW_AS" />
                <action android:name="com.baidu.autoupdatesdk.ACTION_AS_DOWNLOAD_COMPLETE" />
            </intent-filter>
        </receiver>
所需的权限:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />


四:检查是否有更新

BDAutoUpdateSDK.cpUpdateCheck(this, new MyCPCheckUpdateCallback());
回调方法:

	private class MyCPCheckUpdateCallback implements CPCheckUpdateCallback {
		@Override
		public void onCheckUpdateCallback(AppUpdateInfo info, AppUpdateInfoForInstall infoForInstall) {
			LogUtils.i("-----------------------------------------------------------");
			LogUtils.i("info: " + info);
			LogUtils.i("infoForInstall: " + infoForInstall);
			LogUtils.i("-----------------------------------------------------------");
			if (info != null) {
				
				long appSize;           //应用全量更新包大小(开发者无需关注)
				String appSname;        //应用名称
				String appVersionName;  //应用版本名称
				String appUrl;          //应用全量更新包下载地址(开发者无需关注)
				String appChangeLog;    //新版本更新信息
				
				appSize = info.getAppSize();
				
				appSname = info.getAppSname();
				appVersionName = info.getAppVersionName();
				appUrl = info.getAppUrl();
				appChangeLog = info.getAppChangeLog(); //新版更新信息
				
                                //下面就可以调用自家的更新模块了
				UpdateManager mUpdateManager = new UpdateManager(MainActivity.this, 
						appUrl	, "haoyuanqu.apk", appSize);
					mUpdateManager.showNoticeDialog(appVersionName, appChangeLog);
			}
		}
	}
如果有更新时,可以从info里面获取更新包的信息,然后就可以调用自家的更新模块进行更新,这样不论用户是否是从百度下载的apk,升级方式都是一样的。
关于 APPUpdateInfo 和 APPUpdateInfoForInstall 两个的说明,具体的可以参考自带的文档。
发布了62 篇原创文章 · 获赞 23 · 访问量 24万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章