diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index e09d7be..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -ZUpdate \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 37a7509..dfd2c79 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/.idea/modules.xml b/.idea/modules.xml index a955de6..730e703 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 1510a06..9edc6ce 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -11,7 +11,32 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + @@ -30,93 +56,107 @@ - + - + - - + + + + + + + + - + - - + + - + - - + + + - - + + - - + + - + - - + + - + - - + + - + - - + + - + - - + + + + + + - + - - + + + + + - + - - + + @@ -127,19 +167,13 @@ - isReady - custom + paramsMap - - app - \ No newline at end of file diff --git a/README.md b/README.md index c540685..13f311c 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ allprojects { 然后把 ZDloader 写上: [![](https://jitpack.io/v/LillteZheng/AppUpdate.svg)](https://jitpack.io/#LillteZheng/AppUpdate) ``` -implementation 'com.github.LillteZheng:AppUpdate:v1.2' +implementation 'com.github.LillteZheng:AppUpdate:v1.3' ``` **由于使用了 retrofit 和rxjava 等框架,所以,还需要在您的工程中添加以下关联,不然报错** @@ -48,24 +48,25 @@ implementation 'com.github.LillteZheng:AppUpdate:v1.2' ## 一、检查版本 ``` - ZDown.with(this) - .url(jsonUrlTest) - .listener(new CheckListener(TestBean.class) { - @Override - public void onCheck(final TestBean data) { - - - } - - @Override - public void onFail(String errorMsg) { - Log.d(TAG, "zsr onFail: " + errorMsg); - } - }).check(); + ZDown.checkWith(this) + .url(jsonUrlTest) + .get() + .listener(new CheckListener() { + @Override + public void onCheck(final TestBean data) { + Log.d(TAG, "zsr onCheck: " + data); + } + + @Override + public void onFail(String errorMsg) { + Log.d(TAG, "zsr onFail: " + errorMsg); + } + }).check(); ``` 在listener中,可以把要转换的数据写上,如果不想转换成实体 bean,直接 String.class 就是返回原始的字符串了。 +checkWith 还支持写入参数,使用 params(..) ,支持 get() 和 post() 在检查完版本,可以使用如下代码下载文件: diff --git a/app/build.gradle b/app/build.gradle index 359ff17..d606bb2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,7 +4,7 @@ android { compileSdkVersion 28 buildToolsVersion "29.0.2" defaultConfig { - applicationId "com.zhengsr.zupdate" + applicationId "com.zhengsr.appupdate" minSdkVersion 19 targetSdkVersion 28 versionCode 1 @@ -17,6 +17,7 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } + } dependencies { @@ -36,4 +37,5 @@ dependencies { implementation 'com.squareup.retrofit2:converter-scalars:2.4.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0' implementation 'com.daimajia.numberprogressbar:library:1.4@aar' + } diff --git a/app/src/androidTest/java/com/zhengsr/zupdate/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/zhengsr/appupdate/ExampleInstrumentedTest.java similarity index 95% rename from app/src/androidTest/java/com/zhengsr/zupdate/ExampleInstrumentedTest.java rename to app/src/androidTest/java/com/zhengsr/appupdate/ExampleInstrumentedTest.java index 9655a5d..cc4491c 100644 --- a/app/src/androidTest/java/com/zhengsr/zupdate/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/com/zhengsr/appupdate/ExampleInstrumentedTest.java @@ -1,4 +1,4 @@ -package com.zhengsr.zupdate; +package com.zhengsr.appupdate; import android.content.Context; import android.support.test.InstrumentationRegistry; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0eff8e2..eedf0cf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.zhengsr.appupdate"> @@ -12,7 +12,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + diff --git a/app/src/main/java/com/zhengsr/zupdate/CusDialog.java b/app/src/main/java/com/zhengsr/appupdate/CusDialog.java similarity index 99% rename from app/src/main/java/com/zhengsr/zupdate/CusDialog.java rename to app/src/main/java/com/zhengsr/appupdate/CusDialog.java index 8ba58c9..42f593f 100644 --- a/app/src/main/java/com/zhengsr/zupdate/CusDialog.java +++ b/app/src/main/java/com/zhengsr/appupdate/CusDialog.java @@ -1,4 +1,4 @@ -package com.zhengsr.zupdate; +package com.zhengsr.appupdate; import android.app.Dialog; import android.content.Context; diff --git a/app/src/main/java/com/zhengsr/zupdate/MainActivity.java b/app/src/main/java/com/zhengsr/appupdate/MainActivity.java similarity index 92% rename from app/src/main/java/com/zhengsr/zupdate/MainActivity.java rename to app/src/main/java/com/zhengsr/appupdate/MainActivity.java index 10629c3..7d98c8b 100644 --- a/app/src/main/java/com/zhengsr/zupdate/MainActivity.java +++ b/app/src/main/java/com/zhengsr/appupdate/MainActivity.java @@ -1,25 +1,21 @@ -package com.zhengsr.zupdate; +package com.zhengsr.appupdate; -import android.app.Notification; -import android.app.NotificationManager; -import android.graphics.BitmapFactory; import android.os.Environment; -import android.support.v4.app.NotificationCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; -import android.text.format.Formatter; import android.util.Log; import android.view.View; import android.widget.Button; -import android.widget.TextView; import com.daimajia.numberprogressbar.NumberProgressBar; + import com.zhengsr.zdwon_lib.ZDown; import com.zhengsr.zdwon_lib.bean.ZBean; import com.zhengsr.zdwon_lib.callback.CheckListener; import com.zhengsr.zdwon_lib.callback.TaskListener; import com.zhengsr.zdwon_lib.utils.ZCommontUitls; + public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; // String fileUrlTest = "http://192.168.1.154:8089/xampp.exe"; @@ -48,9 +44,12 @@ protected void onCreate(Bundle savedInstanceState) { public void check(View view) { - ZDown.with(this) + + + ZDown.checkWith(this) .url(jsonUrlTest) - .listener(new CheckListener(TestBean.class) { + .get() + .listener(new CheckListener() { @Override public void onCheck(final TestBean data) { diff --git a/app/src/main/java/com/zhengsr/zupdate/TestBean.java b/app/src/main/java/com/zhengsr/appupdate/TestBean.java similarity index 97% rename from app/src/main/java/com/zhengsr/zupdate/TestBean.java rename to app/src/main/java/com/zhengsr/appupdate/TestBean.java index f7eaa68..3b678b4 100644 --- a/app/src/main/java/com/zhengsr/zupdate/TestBean.java +++ b/app/src/main/java/com/zhengsr/appupdate/TestBean.java @@ -1,4 +1,4 @@ -package com.zhengsr.zupdate; +package com.zhengsr.appupdate; /** * @auther by zhengshaorui on 2020/3/22 diff --git a/app/src/test/java/com/zhengsr/zupdate/ExampleUnitTest.java b/app/src/test/java/com/zhengsr/appupdate/ExampleUnitTest.java similarity index 91% rename from app/src/test/java/com/zhengsr/zupdate/ExampleUnitTest.java rename to app/src/test/java/com/zhengsr/appupdate/ExampleUnitTest.java index 0740452..69f3634 100644 --- a/app/src/test/java/com/zhengsr/zupdate/ExampleUnitTest.java +++ b/app/src/test/java/com/zhengsr/appupdate/ExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.zhengsr.zupdate; +package com.zhengsr.appupdate; import org.junit.Test; diff --git a/build.gradle b/build.gradle index 44fe0ec..1e75b0b 100644 --- a/build.gradle +++ b/build.gradle @@ -19,6 +19,7 @@ allprojects { repositories { google() jcenter() + maven { url 'https://jitpack.io' } } } diff --git a/settings.gradle b/settings.gradle index 9408198..9966b9e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ include ':app', ':update-lib' -rootProject.name='ZUpdate' + diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/ZDown.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/ZDown.java index ad05e88..571530b 100644 --- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/ZDown.java +++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/ZDown.java @@ -4,14 +4,19 @@ import com.zhengsr.zdwon_lib.callback.BaseListener; import com.zhengsr.zdwon_lib.entrance.RequestManager; +import com.zhengsr.zdwon_lib.entrance.CheckRequest; import com.zhengsr.zdwon_lib.entrance.imp.db.ZDBManager; -import com.zhengsr.zdwon_lib.entrance.imp.task.ZDownTask; /** * @auther by zhengshaorui on 2020/3/21 * describe: 一个对外的统一接口 */ public class ZDown { + + public static CheckRequest checkWith(Context context){ + return CheckRequest.get(context); + } + public static RequestManager with(Context context){ ZDBManager.getInstance().config(context.getApplicationContext()); return RequestManager.getInstance().with(context); diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/bean/ZTaskBean.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/bean/ZTaskBean.java index 44723a4..ef0499b 100644 --- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/bean/ZTaskBean.java +++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/bean/ZTaskBean.java @@ -4,6 +4,7 @@ import com.zhengsr.zdwon_lib.callback.BaseListener; +import java.util.LinkedHashMap; import java.util.Map; /** @@ -43,7 +44,7 @@ public class ZTaskBean { /** * post 的参数 */ - public Map paramsMap; + public Map paramsMap = new LinkedHashMap<>(); /** * 是否允许后台更新 */ @@ -63,4 +64,9 @@ public class ZTaskBean { * 监听回调 */ public BaseListener listener; + + /** + * 是否为 get 请求,默认为true + */ + public boolean isGet = true; } diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/callback/CheckListener.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/callback/CheckListener.java index 6f97966..1c1bea7 100644 --- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/callback/CheckListener.java +++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/callback/CheckListener.java @@ -1,15 +1,27 @@ package com.zhengsr.zdwon_lib.callback; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; + /** * @auther by zhengshaorui on 2020/3/22 * describe: 检查版本的listener */ public abstract class CheckListener implements BaseListener { - public Class mclazz; + private Class classType; + public CheckListener() { + try { + Type parentType = getClass().getGenericSuperclass(); + Type type = ((ParameterizedType)parentType).getActualTypeArguments()[0]; + classType = (Class) type; + } catch (Exception e) { + e.printStackTrace(); + } + } - public CheckListener(Class mclazz) { - this.mclazz = mclazz; + public Class getClassType() { + return classType; } public abstract void onCheck(T data); diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/CheckRequest.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/CheckRequest.java new file mode 100644 index 0000000..2ef33e7 --- /dev/null +++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/CheckRequest.java @@ -0,0 +1,66 @@ +package com.zhengsr.zdwon_lib.entrance; + +import android.content.Context; + +import com.zhengsr.zdwon_lib.bean.ZTaskBean; +import com.zhengsr.zdwon_lib.callback.CheckListener; +import com.zhengsr.zdwon_lib.entrance.imp.task.ZCheckTask; + +import java.util.Map; + +/** + * @author by zhengshaorui on 2019/9/6 + * Describe: + */ +public class CheckRequest { + + private ZTaskBean mBean; + + public static CheckRequest get(Context context) { + + return new CheckRequest(context); + } + + private CheckRequest(Context context) { + mBean = new ZTaskBean(); + mBean.context = context.getApplicationContext(); + } + + public CheckRequest url(String url) { + mBean.url = url; + return this; + } + + public CheckRequest listener(CheckListener listener) { + mBean.listener = listener; + return this; + } + + public CheckRequest paramsMap(Map map) { + mBean.paramsMap.clear(); + mBean.paramsMap.putAll(map); + return this; + } + + public CheckRequest params(String key, String value) { + mBean.paramsMap.put(key, value); + return this; + } + + + public CheckRequest get() { + mBean.isGet = true; + return this; + } + + + public CheckRequest post() { + mBean.isGet = false; + return this; + } + + public void check(){ + mBean = new CheckParams().checkJsonUrl(mBean); + new ZCheckTask(mBean); + } +} diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/RequestManager.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/RequestManager.java index 2c5a6e6..fa4747a 100644 --- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/RequestManager.java +++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/RequestManager.java @@ -1,12 +1,10 @@ package com.zhengsr.zdwon_lib.entrance; import android.content.Context; -import android.util.Log; -import com.zhengsr.zdwon_lib.bean.ZTaskBean; -import com.zhengsr.zdwon_lib.callback.BaseListener; -import com.zhengsr.zdwon_lib.entrance.imp.task.ZCheckTask; +import com.zhengsr.zdwon_lib.callback.TaskListener; import com.zhengsr.zdwon_lib.entrance.imp.task.ZDownTask; +import com.zhengsr.zdwon_lib.bean.ZTaskBean; import com.zhengsr.zdwon_lib.widget.InvisiabelFragment; import java.util.Map; @@ -77,7 +75,7 @@ public RequestManager reFreshTime(int reFreshTime) { return this; } - public RequestManager listener(BaseListener listener){ + public RequestManager listener(TaskListener listener){ mBean.listener = listener; return this; } @@ -105,13 +103,8 @@ public RequestManager params(String key,String value){ } - /** - * 检查版本 - */ - public void check(){ - mBean = new CheckParams().checkJsonUrl(mBean); - new ZCheckTask(mBean); - } + + /** * 下载 diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/db/ZDBManager.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/db/ZDBManager.java index cb3c63f..b6cc884 100644 --- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/db/ZDBManager.java +++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/db/ZDBManager.java @@ -4,7 +4,6 @@ import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; -import android.util.Log; import com.zhengsr.zdwon_lib.bean.ZThreadBean; diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/net/ZHttpServer.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/net/ZHttpServer.java index 495f016..266bd88 100644 --- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/net/ZHttpServer.java +++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/net/ZHttpServer.java @@ -11,6 +11,7 @@ import retrofit2.http.GET; import retrofit2.http.Header; import retrofit2.http.POST; +import retrofit2.http.QueryMap; import retrofit2.http.Streaming; import retrofit2.http.Url; @@ -38,7 +39,15 @@ public interface ZHttpServer { @GET Call getJson(@Url String url); + + @GET + Call getJson(@Url String url,@QueryMap Map paramsMap); + + + @POST + Call postJson(@Url String url); + @FormUrlEncoded @POST - Call getJson(@Url String url, @FieldMap Map paramsMap); + Call postJson(@Url String url, @FieldMap Map paramsMap); } diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/DownWorker.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/DownWorker.java index 634c3b4..43542e0 100644 --- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/DownWorker.java +++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/DownWorker.java @@ -7,8 +7,6 @@ import com.zhengsr.zdwon_lib.entrance.imp.net.ZHttpCreate; import com.zhengsr.zdwon_lib.utils.ZCommontUitls; -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.disposables.Disposable; import io.reactivex.internal.observers.BlockingBaseObserver; import okhttp3.ResponseBody; diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZCheckTask.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZCheckTask.java index a6d17f8..7da02aa 100644 --- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZCheckTask.java +++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZCheckTask.java @@ -1,17 +1,15 @@ package com.zhengsr.zdwon_lib.entrance.imp.task; -import android.util.Log; - import com.alibaba.fastjson.JSON; import com.zhengsr.zdwon_lib.bean.ZTaskBean; -import com.zhengsr.zdwon_lib.callback.BaseListener; import com.zhengsr.zdwon_lib.callback.CheckListener; import com.zhengsr.zdwon_lib.entrance.imp.net.ZHttpCreate; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; + /** * @auther by zhengshaorui on 2020/3/22 * describe: 检查版本的任务 @@ -23,30 +21,43 @@ public class ZCheckTask { public ZCheckTask(final ZTaskBean info) { Call call; if (info.paramsMap != null && info.paramsMap.size() > 0) { - call = ZHttpCreate.getService().getJson(info.url,info.paramsMap); - }else{ - call = ZHttpCreate.getService().getJson(info.url); - + if (info.isGet) { + call = ZHttpCreate.getService().getJson(info.url, info.paramsMap); + }else{ + call = ZHttpCreate.getService().postJson(info.url,info.paramsMap); + } + } else { + if (info.isGet) { + call = ZHttpCreate.getService().getJson(info.url); + }else{ + call = ZHttpCreate.getService().postJson(info.url); + } } call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - if (info.listener instanceof CheckListener) { - CheckListener listener = (CheckListener) info.listener; - try { - String json = response.body(); - Class mclazz = listener.mclazz; - if (mclazz==String.class){ - listener.onCheck(json); - }else{ - Object data = JSON.parseObject( json, mclazz); - listener.onCheck(data); - } - } catch (Exception e) { - listener.onFail(e.getMessage()); - e.printStackTrace(); + + CheckListener listener = (CheckListener) info.listener; + try { + String json = response.body(); + + + Class mclazz = listener.getClassType(); + + if (mclazz == null || mclazz == String.class){ + listener.onCheck(json); + }else{ + Object data = JSON.parseObject(json, mclazz); + listener.onCheck(data); } + + + } catch (Exception e) { + listener.onFail(e.getMessage()); + e.printStackTrace(); } + + } @Override diff --git a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZDownTask.java b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZDownTask.java index 4c00472..aa2256f 100644 --- a/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZDownTask.java +++ b/update-lib/src/main/java/com/zhengsr/zdwon_lib/entrance/imp/task/ZDownTask.java @@ -6,12 +6,12 @@ import android.text.format.Formatter; import android.util.Log; +import com.zhengsr.zdwon_lib.entrance.imp.net.ZHttpCreate; import com.zhengsr.zdwon_lib.bean.ZTaskBean; import com.zhengsr.zdwon_lib.bean.ZThreadBean; import com.zhengsr.zdwon_lib.callback.BaseListener; import com.zhengsr.zdwon_lib.callback.TaskListener; import com.zhengsr.zdwon_lib.entrance.imp.db.ZDBManager; -import com.zhengsr.zdwon_lib.entrance.imp.net.ZHttpCreate; import com.zhengsr.zdwon_lib.utils.ZCommontUitls; import java.io.File; @@ -60,7 +60,6 @@ public ZDownTask(ZTaskBean bean) { @Override public void handleData(ZTaskBean bean) { if (isReady.get()) { - if (mExecutorService != null && mExecutorService.isShutdown()){ mExecutorService = new ThreadPoolExecutor(bean.threadCount,bean.threadCount*2+1,0, TimeUnit.SECONDS,new LinkedBlockingDeque(128));