From 3b4e8522ecc867b0c8d3f1fc2442c90ca87f81e8 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Wed, 24 Dec 2025 11:06:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=20=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E5=B0=B1=E8=BF=9B=E5=85=A5=20=E9=80=9A=E7=9F=A5=20?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=AE=BE=E7=BD=AE=E9=A1=B5=E9=9D=A2=EF=BC=8C?= =?UTF-8?q?=E8=80=8C=E4=B8=8D=E6=98=AF=E7=9B=B4=E6=8E=A5=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/fragment/HomeItemFragment.kt | 6 ++++- .../vididin/manager/NotificationController.kt | 26 +++++++++++++++++-- .../com/ama/core/architecture/util/SpUtil.kt | 1 + 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt index 7f648f0..02b0ca6 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt @@ -196,7 +196,11 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { if (mIsPlaying != isPlaying) { mIsPlaying = isPlaying if (!mIsPlaying) { - generateThumbAndSet() + binding?.circlePb?.let { + it.postDelayed({ + generateThumbAndSet() + }, 500) + } } else { binding?.circlePb?.isVisible = false } diff --git a/app/src/main/java/com/gamedog/vididin/manager/NotificationController.kt b/app/src/main/java/com/gamedog/vididin/manager/NotificationController.kt index 3ed16fc..103cd20 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/NotificationController.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/NotificationController.kt @@ -2,11 +2,15 @@ package com.gamedog.vididin.manager import android.Manifest import android.app.Activity +import android.content.Context import android.content.Intent +import android.content.pm.PackageManager import android.os.Build import android.provider.Settings import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat import androidx.lifecycle.LifecycleCoroutineScope +import com.ama.core.architecture.util.SpUtil import com.blankj.utilcode.util.StringUtils import com.remax.base.controller.SystemPageNavigationController import com.remax.base.ext.KvBoolDelegate @@ -147,9 +151,15 @@ object NotificationController { DataReportManager.reportData( "Notific_Allow_Start", mapOf("Notific_Allow_Position" to position) ) + + if (isNotificationPermissionGranted(context)) { + return + } + // android判断是否永久拒绝的api存在故意设计 // 权限弹框用户点了返回键也算是一次拒绝 - if (ActivityCompat.shouldShowRequestPermissionRationale( + if (!SpUtil.instance().getBoolean(SpUtil.KEY_HAS_REQUEST_NOTIFICATION_PERMISSION) || + ActivityCompat.shouldShowRequestPermissionRationale( context, Manifest.permission.POST_NOTIFICATIONS ) ) { @@ -163,7 +173,7 @@ object NotificationController { onGrantedOnlyUnauthorized.invoke(isGranted) } - + SpUtil.instance().putBoolean(SpUtil.KEY_HAS_REQUEST_NOTIFICATION_PERMISSION, true) } else { SystemPageNavigationController.markEnterNotificationAccessPage() activityLauncher.launch(Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply { @@ -184,4 +194,16 @@ object NotificationController { } } + + private fun isNotificationPermissionGranted(context: Context): Boolean { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + ContextCompat.checkSelfPermission( + context, + Manifest.permission.POST_NOTIFICATIONS + ) == PackageManager.PERMISSION_GRANTED + } else { + true + } + } + } \ No newline at end of file diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt index e1a4b12..2a26372 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt @@ -41,6 +41,7 @@ class SpUtil private constructor(spFileName: String) { const val KEY_GUIDE_HAS_GOT_NEWBIE_GOLD = "KEY_GUIDE_HAS_GOT_NEWBIE_GOLD" const val KEY_GUIDE_HAS_SHOW = "KEY_GUIDE_STATE" // 1,2,3,4,5, 6 6 stands for finish + const val KEY_HAS_REQUEST_NOTIFICATION_PERMISSION = "KEY_HAS_REQUEST_NOTIFICATION_PERMISSION"