From 4979cc66e144429ac61ca57b6921a7886ad281fd Mon Sep 17 00:00:00 2001 From: kunfei Date: Thu, 2 Feb 2023 22:29:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/lib/permission/Permissions.kt | 2 ++ .../io/legado/app/lib/permission/Request.kt | 28 +++++++++++++------ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/io/legado/app/lib/permission/Permissions.kt b/app/src/main/java/io/legado/app/lib/permission/Permissions.kt index 2f03860ba..873ddfdc3 100644 --- a/app/src/main/java/io/legado/app/lib/permission/Permissions.kt +++ b/app/src/main/java/io/legado/app/lib/permission/Permissions.kt @@ -5,6 +5,8 @@ import android.os.Build @Suppress("unused") object Permissions { + const val POST_NOTIFICATIONS = "android.permission.POST_NOTIFICATIONS" + const val READ_CALENDAR = "android.permission.READ_CALENDAR" const val WRITE_CALENDAR = "android.permission.WRITE_CALENDAR" diff --git a/app/src/main/java/io/legado/app/lib/permission/Request.kt b/app/src/main/java/io/legado/app/lib/permission/Request.kt index 083049302..ae1f0cd5f 100644 --- a/app/src/main/java/io/legado/app/lib/permission/Request.kt +++ b/app/src/main/java/io/legado/app/lib/permission/Request.kt @@ -6,10 +6,12 @@ import android.os.Environment import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import io.legado.app.R import io.legado.app.utils.startActivity +import splitties.init.appCtx @Suppress("MemberVisibilityCanBePrivate") internal class Request : OnRequestPermissionsResultCallback { @@ -118,17 +120,27 @@ internal class Request : OnRequestPermissionsResultCallback { if (permissions != null) { val deniedPermissionList = ArrayList() for (permission in permissions) { - if (permission == Permissions.MANAGE_EXTERNAL_STORAGE) { - if (Permissions.isManageExternalStorage()) { - if (!Environment.isExternalStorageManager()) { + when (permission) { + Permissions.POST_NOTIFICATIONS -> { + if (!NotificationManagerCompat.from(appCtx).areNotificationsEnabled()) { + deniedPermissionList.add(permission) + } + } + Permissions.MANAGE_EXTERNAL_STORAGE -> { + if (Permissions.isManageExternalStorage()) { + if (!Environment.isExternalStorageManager()) { + deniedPermissionList.add(permission) + } + } + } + else -> { + if ( + ContextCompat.checkSelfPermission(context, permission) + != PackageManager.PERMISSION_GRANTED + ) { deniedPermissionList.add(permission) } } - } else if ( - ContextCompat.checkSelfPermission(context, permission) - != PackageManager.PERMISSION_GRANTED - ) { - deniedPermissionList.add(permission) } } val size = deniedPermissionList.size