fix: 修复权限被永久禁止后仍弹窗
This commit is contained in:
parent
8790752988
commit
25bff0ea5b
|
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue