From 877238d2d582853cf0f32ff4939ae56a04de008e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=8E=89=E4=B9=85?= <1484288157@qq.com> Date: Tue, 25 Aug 2020 17:00:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=89=E7=8E=AF=E5=8A=A9=E6=89=8BV4.2.0-?= =?UTF-8?q?=E5=BC=95=E5=AF=BC=E8=AE=BE=E7=BD=AE=E2=80=9C=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E2=80=9D=EF=BC=88=E7=AC=AC3=E6=9C=9F?= =?UTF-8?q?=EF=BC=8920200825=E6=B5=8B=E8=AF=952=20https://gitlab.ghzs.com/?= =?UTF-8?q?pm/halo-app-issues/-/issues/947?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/LibaoUtils.java | 32 ++++++----- .../com/gh/common/util/NotificationHelper.kt | 56 ++++++++++++++----- .../java/com/gh/gamecenter/MainActivity.java | 9 ++- .../com/gh/gamecenter/SuggestionActivity.java | 2 +- 4 files changed, 65 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/LibaoUtils.java b/app/src/main/java/com/gh/common/util/LibaoUtils.java index 5dbc111550..fc532d8921 100644 --- a/app/src/main/java/com/gh/common/util/LibaoUtils.java +++ b/app/src/main/java/com/gh/common/util/LibaoUtils.java @@ -456,20 +456,26 @@ public class LibaoUtils { adapter.initLibaoCode(new UserDataLibaoEntity(libaoCode, "ling", Utils.getTime(context))); adapter.notifyDataSetChanged(); - NotificationHelper.showNotificationHintDialog(NotificationUgc.GIFT); final String finalLibaoCode = libaoCode; - DialogUtils.showWarningDialog(context, "领取成功", Html.fromHtml(context.getString(R.string.linged_dialog, libaoCode)) - , "关闭", " 复制礼包码" - , () -> { - copyLink(finalLibaoCode, context); - if (isInstallRequired) { - libaoBtn.postDelayed(() -> { - Spanned msg = Html.fromHtml(context.getString(R.string.linged_copy_dialog, finalLibaoCode)); - lunningAppDialog(context - , msg, libaoEntity); - }, 300); - } - }, null); + NotificationHelper.showNotificationHintDialog(NotificationUgc.GIFT, isShow -> { + if (!isShow){ + DialogUtils.showWarningDialog(context, "领取成功", Html.fromHtml(context.getString(R.string.linged_dialog, finalLibaoCode)) + , "关闭", " 复制礼包码" + , () -> { + copyLink(finalLibaoCode, context); + if (isInstallRequired) { + libaoBtn.postDelayed(() -> { + Spanned msg = Html.fromHtml(context.getString(R.string.linged_copy_dialog, finalLibaoCode)); + lunningAppDialog(context + , msg, libaoEntity); + }, 300); + } + }, null); + } + return null; + }); + + } @Override diff --git a/app/src/main/java/com/gh/common/util/NotificationHelper.kt b/app/src/main/java/com/gh/common/util/NotificationHelper.kt index dfd3c9be03..caca03c4d8 100644 --- a/app/src/main/java/com/gh/common/util/NotificationHelper.kt +++ b/app/src/main/java/com/gh/common/util/NotificationHelper.kt @@ -18,7 +18,7 @@ import io.reactivex.schedulers.Schedulers object NotificationHelper { @JvmStatic - fun showNotificationHintDialog(ugc: NotificationUgc) { + fun showNotificationHintDialog(ugc: NotificationUgc, callBack: ((isShow: Boolean) -> Unit)? = null) { val showedNewVersion = SPUtils.getInt(Constants.SP_SHOWED_NOTIFICATION_NEW_VERSION, 0) val currentVersion = PackageUtils.getVersionCode() // 版本升级后重置数据 @@ -40,7 +40,10 @@ object NotificationHelper { val isShowedToday = SPUtils.getString(Constants.SP_IS_SHOWED_NOTIFICATION_TODAY, "") // 每天最多只需提示一次 - if (isShowedToday == TimeUtils.getToday()) return + if (isShowedToday == TimeUtils.getToday()){ + callBack?.invoke(false) + return + } val isShowedLogin = SPUtils.getBoolean(Constants.SP_SHOWED_NOTIFICATION_LOGIN, false) val isShowedQuestion = SPUtils.getBoolean(Constants.SP_SHOWED_NOTIFICATION_QUESTION, false) @@ -52,87 +55,110 @@ object NotificationHelper { val isShowedReserveGame = SPUtils.getBoolean(Constants.SP_SHOWED_NOTIFICATION_RESERVE_GAME, false) val isShowedFeedback = SPUtils.getBoolean(Constants.SP_SHOWED_NOTIFICATION_FEEDBACK, false) - if (isShowedLogin && isShowedQuestion && isShowedAnswer && isShowedArticle && isShowedVideo && isShowedRating && isShowedGift && isShowedReserveGame && isShowedFeedback) return + if (isShowedLogin && isShowedQuestion && isShowedAnswer && isShowedArticle && isShowedVideo && isShowedRating && isShowedGift && isShowedReserveGame && isShowedFeedback) { + callBack?.invoke(false) + return + } when (ugc) { NotificationUgc.LOGIN -> { if (!isShowedLogin) { - show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc) + show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc, callBack) SPUtils.setBoolean(Constants.SP_SHOWED_NOTIFICATION_LOGIN, true) // 设置今天的时间,表示今天已经触发过了 SPUtils.setString(Constants.SP_IS_SHOWED_NOTIFICATION_TODAY, TimeUtils.getToday()) + } else { + callBack?.invoke(false) } } NotificationUgc.QUESTION -> { if (!isShowedQuestion) { - show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc) + show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc, callBack) SPUtils.setBoolean(Constants.SP_SHOWED_NOTIFICATION_QUESTION, true) SPUtils.setString(Constants.SP_IS_SHOWED_NOTIFICATION_TODAY, TimeUtils.getToday()) + } else { + callBack?.invoke(false) } } NotificationUgc.ANSWER -> { if (!isShowedAnswer) { - show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc) + show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc, callBack) SPUtils.setBoolean(Constants.SP_SHOWED_NOTIFICATION_ANSWER, true) SPUtils.setString(Constants.SP_IS_SHOWED_NOTIFICATION_TODAY, TimeUtils.getToday()) + } else { + callBack?.invoke(false) } } NotificationUgc.ARTICLE -> { if (!isShowedArticle) { - show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc) + show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc, callBack) SPUtils.setBoolean(Constants.SP_SHOWED_NOTIFICATION_ARTICLE, true) SPUtils.setString(Constants.SP_IS_SHOWED_NOTIFICATION_TODAY, TimeUtils.getToday()) + } else { + callBack?.invoke(false) } } NotificationUgc.VIDEO -> { if (!isShowedVideo) { - show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc) + show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc, callBack) SPUtils.setBoolean(Constants.SP_SHOWED_NOTIFICATION_VIDEO, true) SPUtils.setString(Constants.SP_IS_SHOWED_NOTIFICATION_TODAY, TimeUtils.getToday()) + } else { + callBack?.invoke(false) } } NotificationUgc.RATING -> { if (!isShowedRating) { - show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc) + show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc, callBack) SPUtils.setBoolean(Constants.SP_SHOWED_NOTIFICATION_RATING, true) SPUtils.setString(Constants.SP_IS_SHOWED_NOTIFICATION_TODAY, TimeUtils.getToday()) + } else { + callBack?.invoke(false) } } NotificationUgc.GIFT -> { if (!isShowedGift) { - show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc) + show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc, callBack) SPUtils.setBoolean(Constants.SP_SHOWED_NOTIFICATION_GIFT, true) SPUtils.setString(Constants.SP_IS_SHOWED_NOTIFICATION_TODAY, TimeUtils.getToday()) + } else { + callBack?.invoke(false) } } NotificationUgc.RESERVE_GAME -> { if (!isShowedReserveGame) { - show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc) + show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc, callBack) SPUtils.setBoolean(Constants.SP_SHOWED_NOTIFICATION_RESERVE_GAME, true) SPUtils.setString(Constants.SP_IS_SHOWED_NOTIFICATION_TODAY, TimeUtils.getToday()) + } else { + callBack?.invoke(false) } } NotificationUgc.FEEDBACK -> { if (!isShowedFeedback) { - show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc) + show(AppManager.getInstance().currentActivity() as AppCompatActivity, ugc, callBack) SPUtils.setBoolean(Constants.SP_SHOWED_NOTIFICATION_FEEDBACK, true) SPUtils.setString(Constants.SP_IS_SHOWED_NOTIFICATION_TODAY, TimeUtils.getToday()) + } else { + callBack?.invoke(false) } } } } @SuppressLint("CheckResult") - fun show(activity: AppCompatActivity?, ugc: NotificationUgc) { + fun show(activity: AppCompatActivity?, ugc: NotificationUgc, callBack: ((isShow: Boolean) -> Unit)? = null) { if (activity == null) return - showEnableNotificationDialogIfItsDisabled(activity, ugc) + showEnableNotificationDialogIfItsDisabled(activity, ugc, callBack) } @JvmStatic - fun showEnableNotificationDialogIfItsDisabled(activity: AppCompatActivity, ugc: NotificationUgc) { + fun showEnableNotificationDialogIfItsDisabled(activity: AppCompatActivity, ugc: NotificationUgc, callBack: ((isShow: Boolean) -> Unit)? = null) { if (notificationIsEnable()) { Utils.log("notification is enable") + callBack?.invoke(false) } else { + callBack?.invoke(true) NotificationHintDialogFragment.getInstance(ugc).show(activity.supportFragmentManager, "notification") } } diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 15bcea41c6..c79afaa12f 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -23,9 +23,6 @@ import android.view.View; import android.view.Window; import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.lifecycle.ViewModelProviders; - import com.gh.base.AppUncaughtHandler; import com.gh.base.BaseActivity; import com.gh.base.fragment.BaseFragment_ViewPager; @@ -122,6 +119,8 @@ import java.util.TimerTask; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; +import androidx.annotation.NonNull; +import androidx.lifecycle.ViewModelProviders; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import okhttp3.MediaType; @@ -402,7 +401,7 @@ public class MainActivity extends BaseActivity { private void checkNotificationPermission() { // 仅登录后再启动光环时请求一次权限 if (UserManager.getInstance().isLoggedIn()) { - NotificationHelper.showNotificationHintDialog(NotificationUgc.LOGIN); + NotificationHelper.showNotificationHintDialog(NotificationUgc.LOGIN, null); } } @@ -665,7 +664,7 @@ public class MainActivity extends BaseActivity { if (in != null) { final BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String content = ""; - for (String line; (line = reader.readLine()) != null; content += line); + for (String line; (line = reader.readLine()) != null; content += line) ; if (!TextUtils.isEmpty(content)) { DefaultUrlHandler.interceptUrl(this, content, "(特定包启动跳转)"); diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index 9222ac1aa8..c504339dfd 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -1132,7 +1132,7 @@ public class SuggestionActivity extends ToolBarActivity implements OnRequestCall }*/ toast("感谢您的反馈!"); finish(); - AppExecutor.getUiExecutor().executeWithDelay(() -> NotificationHelper.showNotificationHintDialog(NotificationUgc.FEEDBACK), 1000); + AppExecutor.getUiExecutor().executeWithDelay(() -> NotificationHelper.showNotificationHintDialog(NotificationUgc.FEEDBACK, null), 1000); } @Override