ACCESS_LOCATION_EXTRA_COMMANDS ACCESS_NETWORK_STATE ACCESS_NOTIFICATION_POLICY ACCESS_WIFI_STATE BLUETOOTH BLUETOOTH_ADMIN BROADCAST_STICKY CHANGE_NETWORK_STATE CHANGE_WIFI_MULTICAST_STATE CHANGE_WIFI_STATE DISABLE_KEYGUARD EXPAND_STATUS_BAR GET_PACKAGE_SIZE INTERNET KILL_BACKGROUND_PROCESSES MODIFY_AUDIO_SETTINGS NFC READ_SYNC_SETTINGS READ_SYNC_STATS RECEIVE_BOOT_COMPLETED REORDER_TASKS REQUEST_INSTALL_PACKAGES SET_TIME_ZONE SET_WALLPAPER SET_WALLPAPER_HINTS TRANSMIT_IR USE_FINGERPRINT VIBRATE WAKE_LOCK WRITE_SYNC_SETTINGS SET_ALARM INSTALL_SHORTCUT UNINSTALL_SHORTCUT
object MQPermissionUtil {
private var mRequestCode = -1
private val isOverMarshmallow: Boolean = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
private var mOnPermissionListener: OnPermissionListener? = null
fun requestPermissions(activity: Activity, requestCode: Int, permissions: Array<String>, isCancelFinish: Boolean, onPermissionGrantedListener: OnPermissionGrantedListener) {
requestPermissionsResult(activity, requestCode, permissions, object : OnPermissionListener {
override fun onPermissionGranted() {
onPermissionGrantedListener.onPermissionGranted()
}
override fun onPermissionDenied() {
if (isCancelFinish) {
showTipsDialogWel(activity)
} else {
showTipsDialog(activity)
}
}
})
}
private fun requestPermissionsResult(activity: Activity, requestCode: Int, permissions: Array<String>, callback: OnPermissionListener) {
mOnPermissionListener = callback
if (checkPermissions(activity, *permissions)) {
if (mOnPermissionListener != null)
mOnPermissionListener!!.onPermissionGranted()
} else {
val deniedPermissions = getDeniedPermissions(activity, *permissions)
if (deniedPermissions.isNotEmpty()) {
mRequestCode = requestCode
ActivityCompat.requestPermissions(activity, deniedPermissions
.toTypedArray(), requestCode)
}
}
}
fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
if (requestCode == mRequestCode) {
if (verifyPermissions(grantResults)) {
if (mOnPermissionListener != null)
mOnPermissionListener!!.onPermissionGranted()
} else {
if (mOnPermissionListener != null)
mOnPermissionListener!!.onPermissionDenied()
}
}
}
private fun startAppSettings(context: Context) {
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
intent.data = Uri.parse("package:" + context.packageName)
context.startActivity(intent)
}
private fun verifyPermissions(grantResults: IntArray): Boolean {
if (grantResults.isEmpty())
return false
// 循环判断每个权限是否被拒绝
for (grantResult in grantResults) {
if (grantResult != PackageManager.PERMISSION_GRANTED) {
return false
}
}
return true
}
private fun getDeniedPermissions(context: Context, vararg permissions: String): List<String> {
val deniedPermissions = ArrayList<String>()
for (permission in permissions) {
if (ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_DENIED) {
deniedPermissions.add(permission)
}
}
return deniedPermissions
}
private fun checkPermissions(context: Context, vararg permissions: String): Boolean {
if (isOverMarshmallow) {
for (permission in permissions) {
if (ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_DENIED) {
return false
}
}
}
return true
}
fun showTipsDialog(activity: Activity) {
AlertDialog.Builder(activity)
.setTitle("提示信息")
.setMessage("当前应用缺少必要权限,無法正常使用,请单击【确定】按钮前往设置中心进行权限授权。")
.setNegativeButton("取消", null)
.setPositiveButton("确定") { _, _ ->
activity.finish()
startAppSettings(activity)
}.show()
}
fun showTipsDialogWel(activity: Activity) {
AlertDialog.Builder(activity)
.setTitle("提示信息")
.setMessage("当前应用缺少必要权限,無法正常使用,请单击【确定】按钮前往设置中心进行权限授权。")
.setNegativeButton("取消") { _, _ -> activity.finish() }
.setPositiveButton("确定") { _, _ ->
activity.finish()
startAppSettings(activity)
}.show()
}
interface OnPermissionGrantedListener {
fun onPermissionGranted()
}
interface OnPermissionListener {
fun onPermissionGranted()
fun onPermissionDenied()
}
}
MangoPermissionUtil.requestPermissions(this@IndexActivity, Constant.PERMISSION_OPERATION_CODE_SCAN, arrayOf(Manifest.permission.CAMERA), false, object : MangoPermissionUtil.OnPermissionGrantedListener {
override fun onPermissionGranted() {
//在这表示用户同意了权限申请。
//假如用户拒绝了权限申请在这儿我是没让他进入到应用中的效果如下
}
})
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
MangoPermissionUtil.onRequestPermissionsResult(requestCode, permissions, grantResults)
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有