解决 第一次就进入 通知 系统设置页面,而不是直接请求权限

This commit is contained in:
renhaoting 2025-12-24 11:06:51 +08:00
parent 8cbc29db36
commit 3b4e8522ec
3 changed files with 30 additions and 3 deletions

View File

@ -196,7 +196,11 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
if (mIsPlaying != isPlaying) { if (mIsPlaying != isPlaying) {
mIsPlaying = isPlaying mIsPlaying = isPlaying
if (!mIsPlaying) { if (!mIsPlaying) {
binding?.circlePb?.let {
it.postDelayed({
generateThumbAndSet() generateThumbAndSet()
}, 500)
}
} else { } else {
binding?.circlePb?.isVisible = false binding?.circlePb?.isVisible = false
} }

View File

@ -2,11 +2,15 @@ package com.gamedog.vididin.manager
import android.Manifest import android.Manifest
import android.app.Activity import android.app.Activity
import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build import android.os.Build
import android.provider.Settings import android.provider.Settings
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.lifecycle.LifecycleCoroutineScope import androidx.lifecycle.LifecycleCoroutineScope
import com.ama.core.architecture.util.SpUtil
import com.blankj.utilcode.util.StringUtils import com.blankj.utilcode.util.StringUtils
import com.remax.base.controller.SystemPageNavigationController import com.remax.base.controller.SystemPageNavigationController
import com.remax.base.ext.KvBoolDelegate import com.remax.base.ext.KvBoolDelegate
@ -147,9 +151,15 @@ object NotificationController {
DataReportManager.reportData( DataReportManager.reportData(
"Notific_Allow_Start", mapOf("Notific_Allow_Position" to position) "Notific_Allow_Start", mapOf("Notific_Allow_Position" to position)
) )
if (isNotificationPermissionGranted(context)) {
return
}
// android判断是否永久拒绝的api存在故意设计 // android判断是否永久拒绝的api存在故意设计
// 权限弹框用户点了返回键也算是一次拒绝 // 权限弹框用户点了返回键也算是一次拒绝
if (ActivityCompat.shouldShowRequestPermissionRationale( if (!SpUtil.instance().getBoolean(SpUtil.KEY_HAS_REQUEST_NOTIFICATION_PERMISSION) ||
ActivityCompat.shouldShowRequestPermissionRationale(
context, Manifest.permission.POST_NOTIFICATIONS context, Manifest.permission.POST_NOTIFICATIONS
) )
) { ) {
@ -163,7 +173,7 @@ object NotificationController {
onGrantedOnlyUnauthorized.invoke(isGranted) onGrantedOnlyUnauthorized.invoke(isGranted)
} }
SpUtil.instance().putBoolean(SpUtil.KEY_HAS_REQUEST_NOTIFICATION_PERMISSION, true)
} else { } else {
SystemPageNavigationController.markEnterNotificationAccessPage() SystemPageNavigationController.markEnterNotificationAccessPage()
activityLauncher.launch(Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply { 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
}
}
} }

View File

@ -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_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_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"