• 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() + "
     install info: " + infoForInstall.getAppSName() + ", 
    verion=" + infoForInstall.getAppVersionName() + ", 
    change log=" + infoForInstall.getAppChangeLog());
    				txt_log.setText(txt_log.getText() + "
     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() + "
     no update.");
    			}
    			dialog.dismiss();
    		}
    
    	}
    	
    	private class UpdateDownloadCallback implements CPUpdateDownloadCallback {
    		@Override
    		public void onDownloadComplete(String apkPath) {
    			txt_log.setText(txt_log.getText() + "
     onDownloadComplete: " + apkPath);
    			BDAutoUpdateSDK.cpUpdateInstall(getApplicationContext(), apkPath);
    		}
    
    		@Override
    		public void onStart() {
    			txt_log.setText(txt_log.getText() + "
     Download onStart");
    		}
    
    		@Override
    		public void onPercent(int percent, long rcvLen, long fileSize) {
    			txt_log.setText(txt_log.getText() + "
     Download onPercent: " + percent + "%");
    		}
    
    		@Override
    		public void onFail(Throwable error, String content) {
    			txt_log.setText(txt_log.getText() + "
     Download onFail: " + content);
    		}
    
    		@Override
    		public void onStop() {
    			txt_log.setText(txt_log.getText() + "
     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

    推荐下自己创建的android QQ群:202928390 欢迎大家的加入.

    点击下载源码

  • 相关阅读:
    深入理解分布式事务,高并发下分布式事务的解决方案
    java分布式事务,及解决方案
    java的两种同步方式, Synchronized与ReentrantLock的区别
    MYSQL 查看最大连接数和修改最大连接数
    SpringCloud学习:Eureka、Ribbon和Feign
    dubbo支持协议及具体对比
    如何正确地给图像添加高斯噪声
    图像质量评价指标之 PSNR 和 SSIM
    超光谱图像去噪基准
    LeetCode 240——搜索二维矩阵 II
  • 原文地址:https://www.cnblogs.com/yishaochu/p/5078591.html
Copyright © 2020-2023  润新知