1. 程式人生 > >Android接入百度自動更新SDK

Android接入百度自動更新SDK

一:前言

公司的app,上傳到百度應用市場,然後說必須要接入百度的自動更新sdk才能上架,於是從百度官網上去下載jar包,下載的時候必須要帶上資料統計,如果使用自動的jar包,還需要帶上廣告聯盟,坑爹啊,有木有。我下載下來把其他無關的jar包根so檔案刪掉了.把百度的demo也進行精簡了一下.只留下了自動更新必須要用到的.

二:效果圖如下

三:程式碼如下

AutoUpdateActivity.java  程式碼刪的就剩下整個Activity了,其實呼叫百度sdk還挺簡單的,一句話就能搞定,然後再監聽回撥函式.

/**  * 百度自動更新  * @author ansen   * @create time 2015-11-07  */ public class AutoUpdateActivity extends Activity implements View.OnClickListener {     private TextView txt_log;     private ProgressDialog dialog;          @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.autoupdate_main);         findViewById(R.id.btn_ui).setOnClickListener(this);         findViewById(R.id.btn_silence).setOnClickListener(this);         findViewById(R.id.btn_as).setOnClickListener(this);         findViewById(R.id.btn_noui).setOnClickListener(this);         txt_log = (TextView) findViewById(R.id.txt_log);         dialog = new ProgressDialog(this);         dialog.setIndeterminate(true);     }          @Override     public void onClick(View v) {         switch (v.getId()) {         case R.id.btn_ui://UI更新             txt_log.setText("");             dialog.show();             BDAutoUpdateSDK.uiUpdateAction(this, new MyUICheckUpdateCallback());             break;         case R.id.btn_silence:             txt_log.setText("");             BDAutoUpdateSDK.silenceUpdateAction(this);             break;         case R.id.btn_as:             txt_log.setText("");             dialog.show();             BDAutoUpdateSDK.asUpdateAction(this, new MyUICheckUpdateCallback());             break;         case R.id.btn_noui:             txt_log.setText("");             dialog.show();             BDAutoUpdateSDK.cpUpdateCheck(this, new MyCPCheckUpdateCallback());             break;         }     }          @Override     protected void onDestroy() {         dialog.dismiss();         super.onDestroy();     }          private class MyUICheckUpdateCallback implements UICheckUpdateCallback {         @Override         public void onCheckComplete() {             dialog.dismiss();         }     }          private class MyCPCheckUpdateCallback implements CPCheckUpdateCallback {         @Override         public void onCheckUpdateCallback(AppUpdateInfo info, AppUpdateInfoForInstall infoForInstall) {             if(infoForInstall != null && !TextUtils.isEmpty(infoForInstall.getInstallPath())) {                 txt_log.setText(txt_log.getText() + "\n install info: " + infoForInstall.getAppSName() + ", \nverion=" + infoForInstall.getAppVersionName() + ", \nchange log=" + infoForInstall.getAppChangeLog());                 txt_log.setText(txt_log.getText() + "\n we can install the apk file in: " + infoForInstall.getInstallPath());                 BDAutoUpdateSDK.cpUpdateInstall(getApplicationContext(), infoForInstall.getInstallPath());             }else if(info != null) {                 BDAutoUpdateSDK.cpUpdateDownload(AutoUpdateActivity.this, info, new UpdateDownloadCallback());             }else {                 txt_log.setText(txt_log.getText() + "\n no update.");             }             dialog.dismiss();         }       }          private class UpdateDownloadCallback implements CPUpdateDownloadCallback {         @Override         public void onDownloadComplete(String apkPath) {             txt_log.setText(txt_log.getText() + "\n onDownloadComplete: " + apkPath);             BDAutoUpdateSDK.cpUpdateInstall(getApplicationContext(), apkPath);         }           @Override         public void onStart() {             txt_log.setText(txt_log.getText() + "\n Download onStart");         }           @Override         public void onPercent(int percent, long rcvLen, long fileSize) {             txt_log.setText(txt_log.getText() + "\n Download onPercent: " + percent + "%");         }           @Override         public void onFail(Throwable error, String content) {             txt_log.setText(txt_log.getText() + "\n Download onFail: " + content);         }           @Override         public void onStop() {             txt_log.setText(txt_log.getText() + "\n Download onStop");         }     } }

autoupdate_main.xml   AutoUpdateActivity載入的佈局檔案. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:padding="10dip"     android:orientation="vertical"     android:gravity="center"     tools:context="${packageName}.${activityClass}" >       <LinearLayout          android:layout_width="match_parent"         android:layout_height="wrap_content"         android:orientation="vertical">                  <Button              android:id="@+id/btn_ui"             android:layout_width="match_parent"             android:layout_height="40dip"             android:text="UI更新"/>              <Button              android:id="@+id/btn_silence"             android:layout_width="match_parent"             android:layout_height="40dip"             android:text="靜默更新"             />                  <Button              android:id="@+id/btn_as"             android:layout_width="match_parent"             android:layout_height="40dip"             android:text="百度助手更新"             />              <Button              android:id="@+id/btn_noui"             android:layout_width="match_parent"             android:layout_height="40dip"             android:text="無UI更新"             />     </LinearLayout>          <ScrollView          android:layout_width="match_parent"         android:layout_height="match_parent">                  <TextView              android:id="@+id/txt_log"             android:layout_width="match_parent"             android:layout_height="wrap_content"             />     </ScrollView>      </LinearLayout> 四.注意事項

1.需要引用另外一個專案,另外一個專案裡面必須有兩個百度的jar包.BDAutoUpdate_APPX_SDK_20150826.jar跟need_lib.jar

2.需要在AndroidManifest.xml中配置appid,appkey,還有彈窗顯示的Activity.

        <!-- 百度自動更新SDK   Appid配置,AppKey配置-->         <meta-data android:name="BDAPPID" android:value="3067515"/>             <meta-data android:name="BDAPPKEY" android:value="f3Os4GAOqxgm79GqbnkT9L8T"/>         <!-- 百度自動更新SDK -->         <activity             android:name="com.baidu.autoupdatesdk.ConfirmDialoigActivity"             android:exported="false"             android:screenOrientation="sensor"             android:theme="@style/bdp_update_dialog_style_fullscreen"/> 3.appid跟appkey是官網申請的  http://app.baidu.com/value/sdkservice?f=9

4.如果你打包的專案對程式碼有混淆,記得忽略百度的jar包混淆.