fix: 修复权限被永久禁止后仍弹窗

This commit is contained in:
HuanCheng65 2022-12-31 17:05:57 +08:00
parent 8790752988
commit 25bff0ea5b
No known key found for this signature in database
GPG Key ID: E9031EF91A805148
1 changed files with 16 additions and 3 deletions

View File

@ -1,7 +1,9 @@
package com.huanchengfly.tieba.post.utils package com.huanchengfly.tieba.post.utils
import android.app.Activity
import android.content.Context import android.content.Context
import android.os.Build import android.os.Build
import androidx.core.app.ActivityCompat
import com.hjq.permissions.OnPermissionCallback import com.hjq.permissions.OnPermissionCallback
import com.hjq.permissions.XXPermissions import com.hjq.permissions.XXPermissions
import com.huanchengfly.tieba.post.R import com.huanchengfly.tieba.post.R
@ -215,6 +217,17 @@ class PermissionRequester(val context: Context) {
if (XXPermissions.isGranted(context, permissions)) { if (XXPermissions.isGranted(context, permissions)) {
onGranted?.invoke() onGranted?.invoke()
} else { } else {
val isFirstRequest = permissions.any {
!SharedPreferencesUtil.get(SharedPreferencesUtil.SP_PERMISSION)
.getBoolean("tried_request_${it}", false)
}
val showRationale = (context !is Activity) || permissions.any {
ActivityCompat.shouldShowRequestPermissionRationale(
context,
it
)
}
val showDialog = isFirstRequest || showRationale
val dialog = RequestPermissionTipDialog( val dialog = RequestPermissionTipDialog(
context, context,
PermissionUtils.Permission(permissions, description) PermissionUtils.Permission(permissions, description)
@ -233,15 +246,15 @@ class PermissionRequester(val context: Context) {
} else { } else {
onDenied?.invoke() onDenied?.invoke()
} }
dialog.dismiss() if (showDialog) dialog.dismiss()
} }
override fun onDenied(permissions: List<String>, never: Boolean) { override fun onDenied(permissions: List<String>, never: Boolean) {
onDenied?.invoke() onDenied?.invoke()
dialog.dismiss() if (showDialog) dialog.dismiss()
} }
}) })
dialog.show() if (showDialog) dialog.show()
} }
} }
} }