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"