From 746a448e12332806396ced21077347ef0efb3010 Mon Sep 17 00:00:00 2001 From: fanhuitong <981964879@qq.com> Date: Fri, 15 Jul 2022 18:25:03 +0800 Subject: [PATCH] =?UTF-8?q?version:=20fix:=20update:=E5=A2=9E=E5=8A=A0TPNS?= =?UTF-8?q?,=E6=9B=B4=E6=96=B0rxjava3,?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 53 +-- app/src/main/AndroidManifest.xml | 145 ++++++++ .../appstore/activity/DetailsActivity.java | 8 +- .../uiui/appstore/activity/MainActivity.java | 22 +- .../appstore/activity/SearcherActivity.java | 8 +- .../uiui/appstore/base/BaseApplication.java | 47 ++- .../appstore/fragment/FeaturedFragment.java | 11 +- .../uiui/appstore/network/HTTPInterface.java | 14 +- .../appstore/network/NetInterfaceManager.java | 11 +- .../network/{URLs => }/UrlAddress.java | 6 +- .../uiui/appstore/network/api/AdminApp.java | 5 +- .../appstore/network/api/BannerImage.java | 4 +- .../appstore/network/api/DownloadApp.java | 4 +- .../uiui/appstore/network/api/GetBanner.java | 4 +- .../appstore/network/api/NewestAppUpdate.java | 4 +- .../appstore/network/api/QueryAllApp.java | 4 +- .../appstore/network/api/QueryPackageApp.java | 4 +- .../com/uiui/appstore/network/api/SNInfo.java | 4 +- .../uiui/appstore/network/api/SearchApp.java | 4 +- .../appstore/receiver/NewAppReceiver.java | 10 +- .../uiui/appstore/service/GuardService.java | 22 +- .../appstore/service/InitJpushServer.java | 10 +- .../com/uiui/appstore/tpush/Constants.java | 17 + .../uiui/appstore/tpush/MessageReceiver.java | 315 ++++++++++++++++++ .../appstore/tpush/common/DBOpenHelper.java | 23 ++ .../tpush/common/NotificationService.java | 135 ++++++++ .../appstore/tpush/po/XGNotification.java | 83 +++++ app/tpns-configs.json | 14 + build.gradle | 3 + 29 files changed, 885 insertions(+), 109 deletions(-) rename app/src/main/java/com/uiui/appstore/network/{URLs => }/UrlAddress.java (93%) create mode 100644 app/src/main/java/com/uiui/appstore/tpush/Constants.java create mode 100644 app/src/main/java/com/uiui/appstore/tpush/MessageReceiver.java create mode 100644 app/src/main/java/com/uiui/appstore/tpush/common/DBOpenHelper.java create mode 100644 app/src/main/java/com/uiui/appstore/tpush/common/NotificationService.java create mode 100644 app/src/main/java/com/uiui/appstore/tpush/po/XGNotification.java create mode 100644 app/tpns-configs.json diff --git a/app/build.gradle b/app/build.gradle index c1fe561..dac2a05 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,5 +1,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' +apply plugin: "com.tencent.android.tpns" def appName() { return "UIUIAppStore" @@ -24,6 +25,11 @@ android { abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' // 还可以添加 'x86', 'x86_64', 'mips', 'mips64' } + + manifestPlaceholders = [ + XG_ACCESS_ID : "1500026388", + XG_ACCESS_KEY : "ACIM0JC38HVN", + ] } compileOptions{ @@ -41,22 +47,12 @@ android { flavorDimensions "default" versionCode 22 versionName "3.1" - manifestPlaceholders = [ - JPUSH_PKGNAME: "com.uiui.appstore", - JPUSH_APPKEY : "c93d01f43046fa500d162817", //JPush 上注册的包名对应的 Appkey. - JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可. - ] } official { flavorDimensions "default" versionCode 1 versionName "1.0" - manifestPlaceholders = [ - JPUSH_PKGNAME: "com.uiui.appstore", - JPUSH_APPKEY : "c93d01f43046fa500d162817", //JPush 上注册的包名对应的 Appkey. - JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可. - ] } } @@ -167,36 +163,41 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" //butterknife - implementation 'com.jakewharton:butterknife:10.2.1' + implementation 'com.jakewharton:butterknife:10.2.3' // If you are using Kotlin, replace annotationProcessor with kapt. // annotationProcessor rootProject.ext.dependencies["butterknife-compiler"] - annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' + annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' //github第三方控件 implementation 'io.github.h07000223:flycoTabLayout:3.0.0' //下拉刷新控件 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //1.0.5及以前版本的老用户升级需谨慎,API改动过大 implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0' //没有使用特殊Header,可以不加这行 //glide - implementation 'com.github.bumptech.glide:glide:4.11.0' - annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' + implementation 'com.github.bumptech.glide:glide:4.13.2' + annotationProcessor 'com.github.bumptech.glide:compiler:4.13.2' //aria implementation 'com.arialyy.aria:core:3.8.15' annotationProcessor 'com.arialyy.aria:compiler:3.8.15' //动态权限框架 implementation 'com.hjq:xxpermissions:6.0' //okhttp - implementation 'com.squareup.okhttp3:okhttp:4.9.3' - //RxJava和Retrofit - implementation 'io.reactivex.rxjava2:rxjava:2.2.5' - implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' - implementation 'com.squareup.retrofit2:retrofit:2.3.0' - implementation 'com.squareup.retrofit2:converter-gson:2.3.0' - implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' + implementation 'com.squareup.okhttp3:okhttp:4.9.1' + //Retrofit + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' +// implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' + implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0' + //RxJava + implementation 'io.reactivex.rxjava3:rxjava:3.0.0' + implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' + //google - implementation 'com.google.code.gson:gson:2.8.7' - implementation 'com.google.zxing:core:3.3.0' + implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.zxing:core:3.5.0' //fastjson - implementation 'com.alibaba:fastjson:1.2.76' + implementation 'com.alibaba:fastjson:1.2.83' + //腾讯移动推送 TPNS + implementation 'com.tencent.tpns:tpns:1.3.2.0-release' // //极光推送 // implementation 'cn.jiguang.sdk:jpush:3.8.6' // 此处以JPush 3.4.1 版本为例。 // implementation 'cn.jiguang.sdk:jcore:2.6.0' // 此处以JCore 2.2.4 版本为例。 @@ -205,7 +206,7 @@ dependencies { //更换字体框架 implementation 'uk.co.chrisjenx:calligraphy:2.3.0' //工具类 - implementation 'com.blankj:utilcodex:1.30.6' + implementation 'com.blankj:utilcodex:1.31.0' //沉浸状态栏 - implementation 'com.gitee.zackratos:UltimateBarX:0.7.1' + implementation 'com.gitee.zackratos:UltimateBarX:0.8.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 37c1db9..aba7557 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -24,6 +24,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/uiui/appstore/activity/DetailsActivity.java b/app/src/main/java/com/uiui/appstore/activity/DetailsActivity.java index 6bb2b71..fd21b0e 100644 --- a/app/src/main/java/com/uiui/appstore/activity/DetailsActivity.java +++ b/app/src/main/java/com/uiui/appstore/activity/DetailsActivity.java @@ -41,10 +41,10 @@ import java.io.File; import java.util.ArrayList; import java.util.List; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; public class DetailsActivity extends BaseActivity { private String TAG = DetailsActivity.class.getSimpleName(); diff --git a/app/src/main/java/com/uiui/appstore/activity/MainActivity.java b/app/src/main/java/com/uiui/appstore/activity/MainActivity.java index 9f1cbf2..583a072 100644 --- a/app/src/main/java/com/uiui/appstore/activity/MainActivity.java +++ b/app/src/main/java/com/uiui/appstore/activity/MainActivity.java @@ -12,7 +12,6 @@ import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; -import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentPagerAdapter; import androidx.viewpager.widget.ViewPager; @@ -41,10 +40,11 @@ import java.io.File; import java.util.ArrayList; import java.util.List; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; public class MainActivity extends BaseActivity { @@ -231,12 +231,12 @@ public class MainActivity extends BaseActivity { .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer>() { @Override - public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { + public void onSubscribe(@NonNull Disposable d) { } @Override - public void onNext(@io.reactivex.annotations.NonNull BaseResponse userInfoBaseResponse) { + public void onNext(@NonNull BaseResponse userInfoBaseResponse) { int code = userInfoBaseResponse.code; //已经绑定 if (code == 200) { @@ -264,7 +264,7 @@ public class MainActivity extends BaseActivity { } @Override - public void onError(@io.reactivex.annotations.NonNull Throwable e) { + public void onError(@NonNull Throwable e) { Log.e(TAG, "onError: " + e.getMessage()); } @@ -281,12 +281,12 @@ public class MainActivity extends BaseActivity { .getQueryAllAppObservable() .subscribe(new Observer>>() { @Override - public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { + public void onSubscribe(@NonNull Disposable d) { } @Override - public void onNext(@io.reactivex.annotations.NonNull BaseResponse> listBaseResponse) { + public void onNext(@NonNull BaseResponse> listBaseResponse) { int code = listBaseResponse.code; if (code == 200) { List infos = listBaseResponse.data; @@ -305,7 +305,7 @@ public class MainActivity extends BaseActivity { } @Override - public void onError(@io.reactivex.annotations.NonNull Throwable e) { + public void onError(@NonNull Throwable e) { Log.e(TAG, "onError: " + e.getMessage()); } diff --git a/app/src/main/java/com/uiui/appstore/activity/SearcherActivity.java b/app/src/main/java/com/uiui/appstore/activity/SearcherActivity.java index 214b696..ab395a4 100644 --- a/app/src/main/java/com/uiui/appstore/activity/SearcherActivity.java +++ b/app/src/main/java/com/uiui/appstore/activity/SearcherActivity.java @@ -26,10 +26,10 @@ import com.uiui.appstore.utils.Utils; import java.util.ArrayList; import java.util.List; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; public class SearcherActivity extends BaseActivity { diff --git a/app/src/main/java/com/uiui/appstore/base/BaseApplication.java b/app/src/main/java/com/uiui/appstore/base/BaseApplication.java index af48c49..0234512 100644 --- a/app/src/main/java/com/uiui/appstore/base/BaseApplication.java +++ b/app/src/main/java/com/uiui/appstore/base/BaseApplication.java @@ -7,6 +7,7 @@ import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.os.Handler; import android.os.Looper; +import android.util.Log; import androidx.annotation.NonNull; @@ -19,12 +20,19 @@ import com.scwang.smartrefresh.layout.api.RefreshHeader; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.footer.ClassicsFooter; import com.scwang.smartrefresh.layout.header.ClassicsHeader; +import com.tencent.android.tpush.XGIOperateCallback; +import com.tencent.android.tpush.XGPushConfig; +import com.tencent.android.tpush.XGPushManager; import com.uiui.appstore.R; import com.uiui.appstore.network.NetInterfaceManager; import com.uiui.appstore.receiver.AppManagerReceiver; import com.uiui.appstore.utils.JGYUtils; import com.uiui.appstore.utils.LogUtils; import com.uiui.appstore.utils.ToastUtil; +import com.uiui.appstore.utils.Utils; + +import java.util.ArrayList; +import java.util.List; /** * Created by asus on 2017/10/27. @@ -38,6 +46,10 @@ public class BaseApplication extends Application { return app; } + public Context getAppContext() { + return getApplicationContext(); + } + //static 代码段可以防止内存泄露 static { //设置全局的Header构建器 @@ -63,6 +75,7 @@ public class BaseApplication extends Application { public void onCreate() { super.onCreate(); app = this; + tPushInit(); ToastUtil.init(this); JGYUtils.init(this); Aria.init(this); @@ -86,6 +99,36 @@ public class BaseApplication extends Application { // ); } + private void tPushInit() { + XGPushConfig.enableDebug(this, true); + XGPushManager.registerPush(this, new XGIOperateCallback() { + @Override + public void onSuccess(Object data, int flag) { + //token在设备卸载重装的时候有可能会变 + Log.e("TPush", "注册成功,设备token为:" + data); + List accountInfoList = new ArrayList<>(); + accountInfoList.add(new XGPushManager.AccountInfo(XGPushManager.AccountType.CUSTOM.getValue(), Utils.getSerial())); + XGPushManager.upsertAccounts(getApplicationContext(), accountInfoList, new XGIOperateCallback() { + @Override + public void onSuccess(Object data, int flag) { + Log.e("TPush", "onSuccess, data:" + data + ", flag:" + flag); + } + + @Override + public void onFail(Object data, int errCode, String msg) { + Log.e("TPush", "onFail, data:" + data + ", code:" + errCode + ", msg:" + msg); + } + }); + } + + @Override + public void onFail(Object data, int errCode, String msg) { + Log.e("TPush", "注册失败,错误码:" + errCode + ",错误信息:" + msg); + } + }); + } + + private AppManagerReceiver mAppManagerReceiver; private void registAppReceive() { @@ -129,8 +172,4 @@ public class BaseApplication extends Application { } }); } - - public Context getAppContext() { - return getApplicationContext(); - } } diff --git a/app/src/main/java/com/uiui/appstore/fragment/FeaturedFragment.java b/app/src/main/java/com/uiui/appstore/fragment/FeaturedFragment.java index e904832..1e0c4b2 100644 --- a/app/src/main/java/com/uiui/appstore/fragment/FeaturedFragment.java +++ b/app/src/main/java/com/uiui/appstore/fragment/FeaturedFragment.java @@ -56,12 +56,11 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.annotations.NonNull; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; - +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; /** * Created by asus on 2017/10/23. diff --git a/app/src/main/java/com/uiui/appstore/network/HTTPInterface.java b/app/src/main/java/com/uiui/appstore/network/HTTPInterface.java index b01da62..caab8fe 100644 --- a/app/src/main/java/com/uiui/appstore/network/HTTPInterface.java +++ b/app/src/main/java/com/uiui/appstore/network/HTTPInterface.java @@ -14,11 +14,11 @@ import com.uiui.appstore.bean.BaseResponse; import com.uiui.appstore.utils.FileUtils; import com.uiui.appstore.utils.JGYUtils; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.annotations.NonNull; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; public class HTTPInterface { @@ -35,12 +35,12 @@ public class HTTPInterface { .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer>() { @Override - public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { + public void onSubscribe(@NonNull Disposable d) { } @Override - public void onNext(@io.reactivex.annotations.NonNull BaseResponse appInfoBaseResponse) { + public void onNext(@NonNull BaseResponse appInfoBaseResponse) { int code = appInfoBaseResponse.code; if (code == 200) { AppInfo appInfo = appInfoBaseResponse.data; diff --git a/app/src/main/java/com/uiui/appstore/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/appstore/network/NetInterfaceManager.java index 6d13af8..3322265 100644 --- a/app/src/main/java/com/uiui/appstore/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/appstore/network/NetInterfaceManager.java @@ -6,7 +6,6 @@ import android.os.Environment; import com.uiui.appstore.bean.AppInfo; import com.uiui.appstore.bean.Banner; import com.uiui.appstore.bean.BaseResponse; -import com.uiui.appstore.network.URLs.UrlAddress; import com.uiui.appstore.network.api.AdminApp; import com.uiui.appstore.network.api.BannerImage; import com.uiui.appstore.network.api.DownloadApp; @@ -22,15 +21,15 @@ import java.io.File; import java.util.List; import java.util.concurrent.TimeUnit; -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.schedulers.Schedulers; import okhttp3.Cache; import okhttp3.OkHttpClient; import retrofit2.CallAdapter; import retrofit2.Converter; import retrofit2.Retrofit; -import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; +import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; public class NetInterfaceManager { @@ -84,7 +83,7 @@ public class NetInterfaceManager { OK_HTTP_CLIENT = builder.build(); } - private static CallAdapter.Factory rxJavaCallAdapterFactory = RxJava2CallAdapterFactory.create(); + private static CallAdapter.Factory rxJavaCallAdapterFactory = RxJava3CallAdapterFactory.create(); private static Converter.Factory gsonConverterFactory = GsonConverterFactory.create(); public Observable> getBannerObservable() { diff --git a/app/src/main/java/com/uiui/appstore/network/URLs/UrlAddress.java b/app/src/main/java/com/uiui/appstore/network/UrlAddress.java similarity index 93% rename from app/src/main/java/com/uiui/appstore/network/URLs/UrlAddress.java rename to app/src/main/java/com/uiui/appstore/network/UrlAddress.java index 0181b78..e9f7286 100644 --- a/app/src/main/java/com/uiui/appstore/network/URLs/UrlAddress.java +++ b/app/src/main/java/com/uiui/appstore/network/UrlAddress.java @@ -1,7 +1,11 @@ -package com.uiui.appstore.network.URLs; +package com.uiui.appstore.network; public class UrlAddress { public final static String ROOT_URL = "https://led.aolelearn.cn/android/"; + + /*获取批次*/ + public static final String GET_BATCH = "sn/getBatch"; + //获取所有应用 public final static String GET_ALL_APPINFO = "app/queryAllApp"; //获取管理员所有应用 diff --git a/app/src/main/java/com/uiui/appstore/network/api/AdminApp.java b/app/src/main/java/com/uiui/appstore/network/api/AdminApp.java index 29de12b..10b6f63 100644 --- a/app/src/main/java/com/uiui/appstore/network/api/AdminApp.java +++ b/app/src/main/java/com/uiui/appstore/network/api/AdminApp.java @@ -2,13 +2,12 @@ package com.uiui.appstore.network.api; import com.uiui.appstore.bean.AppInfo; import com.uiui.appstore.bean.BaseResponse; -import com.uiui.appstore.network.URLs.UrlAddress; +import com.uiui.appstore.network.UrlAddress; import java.util.List; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; -import retrofit2.http.Query; public interface AdminApp { @GET(UrlAddress.GET_ADMIN_APP) diff --git a/app/src/main/java/com/uiui/appstore/network/api/BannerImage.java b/app/src/main/java/com/uiui/appstore/network/api/BannerImage.java index 2785eaf..46f3f96 100644 --- a/app/src/main/java/com/uiui/appstore/network/api/BannerImage.java +++ b/app/src/main/java/com/uiui/appstore/network/api/BannerImage.java @@ -2,11 +2,11 @@ package com.uiui.appstore.network.api; import com.uiui.appstore.bean.BaseResponse; import com.uiui.appstore.bean.ImageUrl; -import com.uiui.appstore.network.URLs.UrlAddress; +import com.uiui.appstore.network.UrlAddress; import java.util.List; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/appstore/network/api/DownloadApp.java b/app/src/main/java/com/uiui/appstore/network/api/DownloadApp.java index ebd7918..1658596 100644 --- a/app/src/main/java/com/uiui/appstore/network/api/DownloadApp.java +++ b/app/src/main/java/com/uiui/appstore/network/api/DownloadApp.java @@ -1,9 +1,9 @@ package com.uiui.appstore.network.api; import com.uiui.appstore.bean.BaseResponse; -import com.uiui.appstore.network.URLs.UrlAddress; +import com.uiui.appstore.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.POST; diff --git a/app/src/main/java/com/uiui/appstore/network/api/GetBanner.java b/app/src/main/java/com/uiui/appstore/network/api/GetBanner.java index 4b997db..082cc0f 100644 --- a/app/src/main/java/com/uiui/appstore/network/api/GetBanner.java +++ b/app/src/main/java/com/uiui/appstore/network/api/GetBanner.java @@ -2,9 +2,9 @@ package com.uiui.appstore.network.api; import com.uiui.appstore.bean.Banner; import com.uiui.appstore.bean.BaseResponse; -import com.uiui.appstore.network.URLs.UrlAddress; +import com.uiui.appstore.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; public interface GetBanner { diff --git a/app/src/main/java/com/uiui/appstore/network/api/NewestAppUpdate.java b/app/src/main/java/com/uiui/appstore/network/api/NewestAppUpdate.java index cda54e1..90fbf97 100644 --- a/app/src/main/java/com/uiui/appstore/network/api/NewestAppUpdate.java +++ b/app/src/main/java/com/uiui/appstore/network/api/NewestAppUpdate.java @@ -4,9 +4,9 @@ package com.uiui.appstore.network.api; import com.uiui.appstore.bean.AppInfo; import com.uiui.appstore.bean.BaseResponse; -import com.uiui.appstore.network.URLs.UrlAddress; +import com.uiui.appstore.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/appstore/network/api/QueryAllApp.java b/app/src/main/java/com/uiui/appstore/network/api/QueryAllApp.java index 8f5bc52..eff8fb0 100644 --- a/app/src/main/java/com/uiui/appstore/network/api/QueryAllApp.java +++ b/app/src/main/java/com/uiui/appstore/network/api/QueryAllApp.java @@ -2,11 +2,11 @@ package com.uiui.appstore.network.api; import com.uiui.appstore.bean.AppInfo; import com.uiui.appstore.bean.BaseResponse; -import com.uiui.appstore.network.URLs.UrlAddress; +import com.uiui.appstore.network.UrlAddress; import java.util.List; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/appstore/network/api/QueryPackageApp.java b/app/src/main/java/com/uiui/appstore/network/api/QueryPackageApp.java index 39f73f5..527297d 100644 --- a/app/src/main/java/com/uiui/appstore/network/api/QueryPackageApp.java +++ b/app/src/main/java/com/uiui/appstore/network/api/QueryPackageApp.java @@ -2,9 +2,9 @@ package com.uiui.appstore.network.api; import com.uiui.appstore.bean.AppInfo; import com.uiui.appstore.bean.BaseResponse; -import com.uiui.appstore.network.URLs.UrlAddress; +import com.uiui.appstore.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/appstore/network/api/SNInfo.java b/app/src/main/java/com/uiui/appstore/network/api/SNInfo.java index 2ff1626..943b3ea 100644 --- a/app/src/main/java/com/uiui/appstore/network/api/SNInfo.java +++ b/app/src/main/java/com/uiui/appstore/network/api/SNInfo.java @@ -2,9 +2,9 @@ package com.uiui.appstore.network.api; import com.uiui.appstore.bean.BaseResponse; import com.uiui.appstore.bean.UserInfo; -import com.uiui.appstore.network.URLs.UrlAddress; +import com.uiui.appstore.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/appstore/network/api/SearchApp.java b/app/src/main/java/com/uiui/appstore/network/api/SearchApp.java index e896d9a..e670a3c 100644 --- a/app/src/main/java/com/uiui/appstore/network/api/SearchApp.java +++ b/app/src/main/java/com/uiui/appstore/network/api/SearchApp.java @@ -2,11 +2,11 @@ package com.uiui.appstore.network.api; import com.uiui.appstore.bean.AppInfo; import com.uiui.appstore.bean.BaseResponse; -import com.uiui.appstore.network.URLs.UrlAddress; +import com.uiui.appstore.network.UrlAddress; import java.util.List; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/appstore/receiver/NewAppReceiver.java b/app/src/main/java/com/uiui/appstore/receiver/NewAppReceiver.java index 8789f78..98cca4e 100644 --- a/app/src/main/java/com/uiui/appstore/receiver/NewAppReceiver.java +++ b/app/src/main/java/com/uiui/appstore/receiver/NewAppReceiver.java @@ -12,11 +12,11 @@ import com.uiui.appstore.utils.JGYUtils; import java.util.concurrent.TimeUnit; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.Observer; -import io.reactivex.annotations.NonNull; -import io.reactivex.disposables.Disposable; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.disposables.Disposable; public class NewAppReceiver extends BroadcastReceiver { private static final String TAG = NewAppReceiver.class.getSimpleName(); diff --git a/app/src/main/java/com/uiui/appstore/service/GuardService.java b/app/src/main/java/com/uiui/appstore/service/GuardService.java index d7160f3..5afad93 100644 --- a/app/src/main/java/com/uiui/appstore/service/GuardService.java +++ b/app/src/main/java/com/uiui/appstore/service/GuardService.java @@ -20,6 +20,9 @@ import androidx.annotation.Nullable; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.arialyy.annotations.Download; +import com.arialyy.aria.core.Aria; +import com.arialyy.aria.core.task.DownloadTask; import com.uiui.appstore.KeepAliveConnection; import com.uiui.appstore.bean.BaseResponse; import com.uiui.appstore.network.NetInterfaceManager; @@ -29,16 +32,14 @@ import com.uiui.appstore.utils.LogUtils; import com.uiui.appstore.utils.SPUtils; import com.uiui.appstore.utils.ServiceAliveUtils; import com.uiui.appstore.utils.Utils; -import com.arialyy.annotations.Download; -import com.arialyy.aria.core.Aria; -import com.arialyy.aria.core.task.DownloadTask; import java.io.File; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; /** @@ -58,7 +59,6 @@ public class GuardService extends Service { Intent i = new Intent(GuardService.this, MyDownloadService.class); startService(i); } - } @Override @@ -138,12 +138,12 @@ public class GuardService extends Service { .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer() { @Override - public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { + public void onSubscribe(@NonNull Disposable d) { } @Override - public void onNext(@io.reactivex.annotations.NonNull BaseResponse baseResponse) { + public void onNext(@NonNull BaseResponse baseResponse) { int code = baseResponse.code; String msg = baseResponse.msg; Log.e("taskComplete", "onNext: " + "code" + code + ",msg:" + msg); @@ -151,7 +151,7 @@ public class GuardService extends Service { } @Override - public void onError(@io.reactivex.annotations.NonNull Throwable e) { + public void onError(@NonNull Throwable e) { Log.e("taskComplete", "onError: " + e.getMessage()); } diff --git a/app/src/main/java/com/uiui/appstore/service/InitJpushServer.java b/app/src/main/java/com/uiui/appstore/service/InitJpushServer.java index fb4a540..1fa0b6f 100644 --- a/app/src/main/java/com/uiui/appstore/service/InitJpushServer.java +++ b/app/src/main/java/com/uiui/appstore/service/InitJpushServer.java @@ -14,11 +14,11 @@ import com.uiui.appstore.utils.SPUtils; import java.io.File; import java.util.concurrent.TimeUnit; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.ObservableOnSubscribe; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; public class InitJpushServer extends Service { public InitJpushServer() { diff --git a/app/src/main/java/com/uiui/appstore/tpush/Constants.java b/app/src/main/java/com/uiui/appstore/tpush/Constants.java new file mode 100644 index 0000000..f1800dc --- /dev/null +++ b/app/src/main/java/com/uiui/appstore/tpush/Constants.java @@ -0,0 +1,17 @@ +package com.uiui.appstore.tpush; + +/** + * Created by chacewang on 2019/7/5. + */ + +public class Constants { + public static final int TEST_LOCAL_NOTIFICATION = 1; + public static final int TEST_NOTIFICATION = 2; + public static final int TEST_SET_TAG = 3; + public static final int TEST_DEL_TAG = 4; + public static final int TEST_SET_ACCOUNT = 5; + public static final int TEST_DEL_ACCOUNT = 6; + + public static final String LOCAL_NOTIFICATION_TITLE = "localtest"; + public static final String TEST_TAG_NAME = "DiagnosisTag"; +} diff --git a/app/src/main/java/com/uiui/appstore/tpush/MessageReceiver.java b/app/src/main/java/com/uiui/appstore/tpush/MessageReceiver.java new file mode 100644 index 0000000..0f16b91 --- /dev/null +++ b/app/src/main/java/com/uiui/appstore/tpush/MessageReceiver.java @@ -0,0 +1,315 @@ +package com.uiui.appstore.tpush; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.text.TextUtils; +import android.util.Log; +import android.widget.Toast; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.tencent.android.tpush.NotificationAction; +import com.tencent.android.tpush.XGPushBaseReceiver; +import com.tencent.android.tpush.XGPushClickedResult; +import com.tencent.android.tpush.XGPushRegisterResult; +import com.tencent.android.tpush.XGPushShowedResult; +import com.tencent.android.tpush.XGPushTextMessage; +import com.uiui.appstore.tpush.common.NotificationService; +import com.uiui.appstore.tpush.po.XGNotification; + +import java.text.SimpleDateFormat; +import java.util.Calendar; + + +public class MessageReceiver extends XGPushBaseReceiver { + public static final String UPDATE_LISTVIEW_ACTION = "com.qq.xgdemo.activity.UPDATE_LISTVIEW"; + public static final String TEST_ACTION = "com.qq.xgdemo.activity.TEST_ACTION"; + public static final String LogTag = "xg.test"; + + private static final String TAG = MessageReceiver.class.getSimpleName(); + + private Context mContext; + private ContentResolver mResolver; + private PackageManager mPackageManager; + + /** + * 消息透传处理 + * + * @param context + * @param message 解析自定义的 JSON + */ + @Override + public void onTextMessage(Context context, XGPushTextMessage message) { + this.mContext = context; + this.mResolver = context.getContentResolver(); + this.mPackageManager = context.getPackageManager(); + + String text = "收到消息:" + message.toString(); + // 获取自定义key-value + String customContent = message.getCustomContent(); + if (customContent != null && customContent.length() != 0) { + JsonObject obj = JsonParser.parseString(customContent).getAsJsonObject(); + // key1为前台配置的key + if (!TextUtils.isEmpty(obj.get("key").getAsString())) { + String value = obj.get("key").getAsString(); + Log.d(LogTag, "get custom value:" + value); + } + // ... + } + // APP自主处理消息的过程... + Log.e(LogTag, text); + show(context, text); + processCustomMessage(context, message); + } + + /** + * 通知展示 + * + * @param context + * @param notifiShowedRlt 包含通知的内容 + */ + @Override + public void onNotificationShowedResult(Context context, XGPushShowedResult notifiShowedRlt) { + if (context == null || notifiShowedRlt == null) { + return; + } + XGNotification notific = new XGNotification(); + notific.setMsg_id(notifiShowedRlt.getMsgId()); + notific.setTitle(notifiShowedRlt.getTitle()); + notific.setContent(notifiShowedRlt.getContent()); + // notificationActionType==1为Activity,2为url,3为intent + notific.setNotificationActionType(notifiShowedRlt + .getNotificationActionType()); + // Activity,url,intent都可以通过getActivity()获得 + notific.setActivity(notifiShowedRlt.getActivity()); + notific.setUpdate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") + .format(Calendar.getInstance().getTime())); + NotificationService.getInstance(context).save(notific); + + Intent testIntent = new Intent(TEST_ACTION); + if (notifiShowedRlt.getTitle().equals(Constants.LOCAL_NOTIFICATION_TITLE)) { + testIntent.putExtra("step", Constants.TEST_LOCAL_NOTIFICATION); + } else { + testIntent.putExtra("step", Constants.TEST_NOTIFICATION); + } + context.sendBroadcast(testIntent); + + Intent viewIntent = new Intent(UPDATE_LISTVIEW_ACTION); + context.sendBroadcast(viewIntent); + show(context, "您有1条新消息, " + "通知被展示 , " + notifiShowedRlt.toString()); + Log.d(LogTag, "您有1条新消息, " + "通知被展示 , " + notifiShowedRlt.toString() + ", PushChannel:" + notifiShowedRlt.getPushChannel()); + } + + /** + * 注册回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + */ + @Override + public void onRegisterResult(Context context, int errorCode, XGPushRegisterResult message) { + if (context == null || message == null) { + return; + } + String text = ""; + if (errorCode == XGPushBaseReceiver.SUCCESS) { + // 在这里拿token + String token = message.getToken(); + text = "注册成功1. token:" + token; + } else { + text = message + "注册失败,错误码:" + errorCode; + } + Log.d(LogTag, text); + show(context, text); + } + + /** + * 反注册回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + */ + @Override + public void onUnregisterResult(Context context, int errorCode) { + if (context == null) { + return; + } + String text = ""; + if (errorCode == XGPushBaseReceiver.SUCCESS) { + text = "反注册成功"; + } else { + text = "反注册失败" + errorCode; + } + Log.d(LogTag, text); + show(context, text); + + } + + /** + * 设置标签回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + * @param tagName 设置的 TAG + */ + @Override + public void onSetTagResult(Context context, int errorCode, String tagName) { + if (context == null) { + return; + } + String text = ""; + if (errorCode == XGPushBaseReceiver.SUCCESS) { + text = "\"" + tagName + "\"设置成功"; + } else { + text = "\"" + tagName + "\"设置失败,错误码:" + errorCode; + } + Log.d(LogTag, text); + show(context, text); + + Intent testIntent = new Intent(TEST_ACTION); + testIntent.putExtra("step", Constants.TEST_SET_TAG); + context.sendBroadcast(testIntent); + } + + /** + * 删除标签的回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + * @param tagName 设置的 TAG + */ + @Override + public void onDeleteTagResult(Context context, int errorCode, String tagName) { + if (context == null) { + return; + } + String text = ""; + if (errorCode == XGPushBaseReceiver.SUCCESS) { + text = "\"" + tagName + "\"删除成功"; + } else { + text = "\"" + tagName + "\"删除失败,错误码:" + errorCode; + } + Log.d(LogTag, text); + show(context, text); + + Intent testIntent = new Intent(TEST_ACTION); + testIntent.putExtra("step", Constants.TEST_DEL_TAG); + context.sendBroadcast(testIntent); + } + + /** + * 设置账号回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + * @param account 设置的账号 + */ + @Override + public void onSetAccountResult(Context context, int errorCode, String account) { + Intent testIntent = new Intent(TEST_ACTION); + testIntent.putExtra("step", Constants.TEST_SET_ACCOUNT); + context.sendBroadcast(testIntent); + } + + + /** + * 删除账号回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + * @param account 设置的账号 + */ + @Override + public void onDeleteAccountResult(Context context, int errorCode, String account) { + Intent testIntent = new Intent(TEST_ACTION); + testIntent.putExtra("step", Constants.TEST_DEL_ACCOUNT); + context.sendBroadcast(testIntent); + } + + @Override + public void onSetAttributeResult(Context context, int i, String s) { + + } + + @Override + public void onDeleteAttributeResult(Context context, int i, String s) { + + } + + @Override + public void onQueryTagsResult(Context context, int errorCode, String data, String operateName) { + Log.i(LogTag, "action - onQueryTagsResult, errorCode:" + errorCode + ", operateName:" + operateName + ", data: " + data); + } + + /** + * 通知点击回调 actionType=1为该消息被清除,actionType=0为该消息被点击 + * + * @param context + * @param message 包含被点击通知的内容 + */ + @Override + public void onNotificationClickedResult(Context context, XGPushClickedResult message) { + if (context == null || message == null) { + return; + } + String text = ""; + if (message.getActionType() == NotificationAction.clicked.getType()) { + // 通知在通知栏被点击啦。。。。。 + // APP自己处理点击的相关动作 + // 这个动作可以在activity的onResume也能监听,请看第3点相关内容 + text = "通知被打开 :" + message; + } else if (message.getActionType() == NotificationAction.delete.getType()) { + // 通知被清除啦。。。。 + // APP自己处理通知被清除后的相关动作 + text = "通知被清除 :" + message; + } + Toast.makeText(context, "广播接收到通知被点击:" + message.toString(), + Toast.LENGTH_SHORT).show(); + // 获取自定义key-value + String customContent = message.getCustomContent(); + if (customContent != null && customContent.length() != 0) { + JsonObject obj = JsonParser.parseString(customContent).getAsJsonObject(); + // key1为前台配置的key + if (!TextUtils.isEmpty(obj.get("key").getAsString())) { + String value = obj.get("key").getAsString(); + Log.d(LogTag, "get custom value:" + value); + } + // ... + } + // APP自主处理的过程。。。 + Log.d(LogTag, text); + show(context, text); + } + + private void show(Context context, String text) { +// Toast.makeText(context, text, Toast.LENGTH_SHORT).show(); + } + + // 9.强制安装应用 + private static final String ACTION_FORCE_INSTALLAPK = "9"; + + private void processCustomMessage(Context context, XGPushTextMessage message) { + if (context == null || message == null) { + return; + } + + String title = message.getTitle(); + String content = message.getContent(); + JsonObject extrasJson = JsonParser.parseString(content).getAsJsonObject(); + + String extras = ""; + if (extrasJson.get("extras") != null) { + extras = extrasJson.get("extras").toString(); + } + + switch (title) { + case ACTION_FORCE_INSTALLAPK: + break; + default: + } + + } + +} diff --git a/app/src/main/java/com/uiui/appstore/tpush/common/DBOpenHelper.java b/app/src/main/java/com/uiui/appstore/tpush/common/DBOpenHelper.java new file mode 100644 index 0000000..70d5b53 --- /dev/null +++ b/app/src/main/java/com/uiui/appstore/tpush/common/DBOpenHelper.java @@ -0,0 +1,23 @@ +package com.uiui.appstore.tpush.common; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +public class DBOpenHelper extends SQLiteOpenHelper { + + public DBOpenHelper(Context context) { + super(context, "XGExample.db", null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + db.execSQL("CREATE TABLE notification (id integer primary key autoincrement,msg_id varchar(64),title varchar(128),activity varchar(256),notificationActionType varchar(512),content text,update_time varchar(16))"); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } + +} diff --git a/app/src/main/java/com/uiui/appstore/tpush/common/NotificationService.java b/app/src/main/java/com/uiui/appstore/tpush/common/NotificationService.java new file mode 100644 index 0000000..fa2c565 --- /dev/null +++ b/app/src/main/java/com/uiui/appstore/tpush/common/NotificationService.java @@ -0,0 +1,135 @@ +package com.uiui.appstore.tpush.common; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; + + +import com.uiui.appstore.tpush.po.XGNotification; + +import java.util.ArrayList; +import java.util.List; + +public class NotificationService { + private DBOpenHelper dbOpenHelper; + private static NotificationService instance = null; + + public NotificationService(Context context) { + this.dbOpenHelper = new DBOpenHelper(context); + } + + public synchronized static NotificationService getInstance(Context ctx) { + if (null == instance) { + instance = new NotificationService(ctx); + } + return instance; + } + + public void save(XGNotification notification) { + SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("msg_id", notification.getMsg_id()); + values.put("title", notification.getTitle()); + values.put("content", notification.getContent()); + values.put("activity", notification.getActivity()); + values.put("notificationActionType", notification.getNotificationActionType()); + values.put("update_time", notification.getUpdate_time()); + db.insert("notification", null, values); + } + + public void delete(Integer id) { + SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); + db.delete("notification", "id=?", new String[] { id.toString() }); + } + + public void deleteAll() { + SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); + db.delete("notification", "", null); + } + + public void update(XGNotification notification) { + SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("msg_id", notification.getMsg_id()); + values.put("title", notification.getTitle()); + values.put("content", notification.getContent()); + values.put("activity", notification.getActivity()); + values.put("notificationActionType", notification.getNotificationActionType()); + values.put("update_time", notification.getUpdate_time()); + db.update("notification", values, "id=?", new String[] { notification + .getId().toString() }); + } + + public XGNotification find(Integer id) { + SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); + Cursor cursor = db + .query("notification", + new String[] { "id,msg_id,title,content,activity,notificationActionType,update_time" }, + "id=?", new String[] { id.toString() }, null, null, + null, "1"); + try { + if (cursor.moveToFirst()) { + return new XGNotification(cursor.getInt(cursor + .getColumnIndex("id")), cursor.getLong(cursor + .getColumnIndex("msg_id")), cursor.getString(cursor + .getColumnIndex("title")), cursor.getString(cursor + .getColumnIndex("content")), cursor.getString(cursor + .getColumnIndex("activity")), cursor.getInt(cursor + .getColumnIndex("notificationActionType")), cursor.getString(cursor + .getColumnIndex("update_time"))); + } + return null; + } finally { + cursor.close(); + } + } + + public List getScrollData(int currentPage, int lineSize, + String msg_id) { + String firstResult = String.valueOf((currentPage - 1) * lineSize); + SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); + Cursor cursor = null; + try { + if (msg_id == null || "".equals(msg_id)) { + cursor = db + .query("notification", + new String[] { "id,msg_id,title,content,activity,notificationActionType,update_time" }, + null, null, null, null, "update_time DESC", + firstResult + "," + lineSize); + } else { + cursor = db + .query("notification", + new String[] { "id,msg_id,title,content,activity,notificationActionType,update_time" }, + "msg_id like ?", new String[] { msg_id + "%" }, + null, null, "update_time DESC", firstResult + + "," + lineSize); + } + List notifications = new ArrayList(); + while (cursor.moveToNext()) { + notifications.add(new XGNotification(cursor.getInt(cursor + .getColumnIndex("id")), cursor.getLong(cursor + .getColumnIndex("msg_id")), cursor.getString(cursor + .getColumnIndex("title")), cursor.getString(cursor + .getColumnIndex("content")), cursor.getString(cursor + .getColumnIndex("activity")), cursor.getInt(cursor + .getColumnIndex("notificationActionType")), cursor.getString(cursor + .getColumnIndex("update_time")))); + } + return notifications; + } finally { + cursor.close(); + } + } + + public int getCount() { + SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); + Cursor cursor = db.rawQuery("select count(*) from notification", null); + try { + cursor.moveToFirst(); + return cursor.getInt(0); + } finally { + cursor.close(); + } + } +} diff --git a/app/src/main/java/com/uiui/appstore/tpush/po/XGNotification.java b/app/src/main/java/com/uiui/appstore/tpush/po/XGNotification.java new file mode 100644 index 0000000..bf4be2a --- /dev/null +++ b/app/src/main/java/com/uiui/appstore/tpush/po/XGNotification.java @@ -0,0 +1,83 @@ +package com.uiui.appstore.tpush.po; + +public class XGNotification { + private Integer id; + private Long msg_id; + private String title; + private String content; + private String activity; + private int notificationActionType; + private String update_time; + + public XGNotification() { + + } + + public XGNotification(Integer id, Long msg_id, String title, + String content, String activity, int notificationActionType, String update_time) { + super(); + this.id = id; + this.msg_id = msg_id; + this.title = title; + this.content = content; + this.activity = activity; + this.notificationActionType = notificationActionType; + this.update_time = update_time; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Long getMsg_id() { + return msg_id; + } + + public void setMsg_id(Long msg_id) { + this.msg_id = msg_id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getUpdate_time() { + return update_time; + } + + public void setUpdate_time(String update_time) { + this.update_time = update_time; + } + + public String getActivity() { + return activity; + } + + public void setActivity(String activity) { + this.activity = activity; + } + + public int getNotificationActionType() { + return notificationActionType; + } + + public void setNotificationActionType(int notificationActionType) { + this.notificationActionType = notificationActionType; + } +} diff --git a/app/tpns-configs.json b/app/tpns-configs.json new file mode 100644 index 0000000..5258fac --- /dev/null +++ b/app/tpns-configs.json @@ -0,0 +1,14 @@ +{ + "tpns": { + "access_id": "1500026388", + "access_key": "ACIM0JC38HVN" + }, + "com.uiui.appstore": { + "channel": { + "enable": true + } + }, + "debug": false, + "version": "1.3.5.0-release", + "upgrade": true +} \ No newline at end of file diff --git a/build.gradle b/build.gradle index f77a9bd..0d10158 100644 --- a/build.gradle +++ b/build.gradle @@ -7,10 +7,12 @@ buildscript { mavenCentral() maven { url "https://jitpack.io" } maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } + maven {url 'http://developer.huawei.com/repo/'} } dependencies { classpath 'com.android.tools.build:gradle:3.6.4' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "com.tencent.android.tpns:tpnsplugin:1.8.0" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -23,6 +25,7 @@ allprojects { mavenCentral() maven { url "https://jitpack.io" } maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } + maven {url 'http://developer.huawei.com/repo/'} } }