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

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) {
mIsPlaying = isPlaying
if (!mIsPlaying) {
binding?.circlePb?.let {
it.postDelayed({
generateThumbAndSet()
}, 500)
}
} else {
binding?.circlePb?.isVisible = false
}

View File

@ -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
}
}
}

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