百度自動更新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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章