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