一:前言
公司的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"); } } }
<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包混淆.
推荐下自己创建的android QQ群:202928390 欢迎大家的加入.
点击下载源码