根据服务器判断是否需要升级

使用

  1. build.gradel(:project)

    // 使用okhttp
    implementation 'com.squareup.okhttp3:okhttp:3.11.0'
    
  2. 使用 (MainActivity.java

    // 使用的包
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import okhttp3.FormBody;
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.Response;
    
    // 定义版本号
    private static String baseVersion = "V1.1";
    
    
    // 获取服务端的版本号是否和本地版本号一致
    private void sendByOKHttp() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                OkHttpClient okhttpclient = new OkHttpClient();
                Request request = new Request.Builder()
                        .url("https://******/version/")
                        .get()
                        .build();
                Log.d("URL",request+"");
                try{
                    Response response = okhttpclient.newCall(request).execute();
                    String responseData = response.body().string();
                    Log.d("输出结果:",responseData);
                    // 转换字典 这里使用ali fastjson
                    // 使用
                    //1. compile 'com.alibaba:fastjson:1.2.54'
                    // import com.alibaba.fastjson.JSON;
    				// import com.alibaba.fastjson.JSONObject;
                    JSONObject jsonObject = JSONObject.parseObject(responseData);
                    String version = jsonObject.getString("version");
    
                    if (baseVersion.equals(version)){
                        Log.d("输出结果","版本相同");
                    }
                    else{
                        updateApp();
                    }
                }catch (Exception e){
                    Log.d("输出结果:","get错误");
                }
            }
        }).start();
    }
    // 打开 UpdateActivity.java
    public void updateApp(){
        Intent intent = new Intent(MainActivity.this,UpdateActivity.class);
        startActivity(intent);
    }
    
  3. 导入sdk

    // 工程build.gradle目录添加
    allprojects {
    	repositories {
    		...
    		maven { url 'https://www.jitpack.io' }
    	}
    }
    
    //项目build.gradle文件添加
    dependencies {
           implementation 'com.github.NewHuLe:AppUpdate:v1.7'
    }
    
  4. UpdateActivity.java

    package com.tf.main;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.util.Log;
    
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.Response;
    
    import com.alibaba.fastjson.JSONObject;
    import com.open.hule.library.entity.AppUpdate;
    import com.open.hule.library.utils.UpdateManager;
    
    
    public class UpdateActivity extends AppCompatActivity {
        private static String url = "";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getUrl();
    
        }
    
        // 获取服务端的url
        private void getUrl() {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    OkHttpClient okhttpclient = new OkHttpClient();
                    Request request = new Request.Builder()
                            .url("https://******/version/")
                            .get()
                            .build();
                    try{
                        Response response = okhttpclient.newCall(request).execute();
                        String responseData = response.body().string();
                        // 转换字典
                        JSONObject jsonObject = JSONObject.parseObject(responseData);
                        url = jsonObject.getString("download_url");
                        checkUpdate();
    
                    }catch (Exception e){
                        Log.d("输出结果:","get错误");
                    }
    
    
                }
            }).start();
        }
    
    
        private void checkUpdate() {
            // 更新的数据参数
            Log.d("下载url:",url);
            AppUpdate appUpdate = new AppUpdate.Builder()
                    //更新地址(必传)
                    .newVersionUrl(url)
                    // 通过传入资源id来自定义更新对话框,注意取消更新的id要定义为btnUpdateLater,立即更新的id要定义为btnUpdateNow(非必填)
                    .updateResourceId(R.layout.dialog_update)
                    // 更新的标题,弹框的标题(非必填,默认为应用更新)
                    .updateTitle(R.string.update_title)
                    // 更新内容的提示语,内容的标题(非必填,默认为更新内容)
                    .updateContentTitle(R.string.update_content_lb)
                    // 保存文件路径(默认前缀:Android/data/包名/files/ 文件名:download)
                    .savePath("/A/B")
                    //是否采取静默下载模式(非必填,只显示更新提示,后台下载完自动弹出安装界面),否则,显示下载进度,显示下载失败
                    .isSilentMode(false)
                    //是否强制更新(非必填,默认不采取强制更新,否则,不更新无法使用)
                    .forceUpdate(1)
                    //文件的MD5值,默认不传,如果不传,不会去验证md5(非静默下载模式生效,若有值,且验证不一致,会启动浏览器去下载)
                    .md5("")
                    .build();
            new UpdateManager().startUpdate(UpdateActivity.this, appUpdate);
    
        }
    
    }
    
    
  5. 服务器返回

    # 获取版本号 客户端根据版本号来判断是否强制更新
    class Version(BaseView):
        def get(self,request):
            result = {
                'appnmae':'',          # app名称  
                'version': settings.EDITION,  # 版本号
                'download_url' : '',           # 更新地址
                'description' : '',            # 版本描述 
                'must':True,                  # 是否强制升级
                'extra':[]                    # 额外信息
            }
    
            return Response(result)
    
    
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐