Kotlin高仿微信-第7篇-主页-动态权限申请

实现代码:

private fun handlePermission(){
    var permissions = arrayOf(
        Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION,
        Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO,
        Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.READ_PHONE_STATE)

    var isGranted = true
    for (i in permissions.indices){
        var permission = permissions[i]
        if(!checkPermission(permission)){
            isGranted = false
            break
        }
    }

    if(!isGranted){
        requestPermissions(permissions, 88)
    }
}

fun checkPermission(permission: String) :Boolean {
    return ContextCompat.checkSelfPermission(WcApp.getContext(), permission) == PackageManager.PERMISSION_GRANTED
}

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray ) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)
    if(requestCode == 88 && grantResults != null && grantResults.size > 0){
        (fragments.get(TAB_WECHAT) as WeChatFragment).refresh()
        (fragments.get(TAB_CONTACTS) as ContactsFragment).refresh()
        (fragments.get(TAB_ME) as MeFragment).refresh()
        processNotification()
    }
}


/**
 * 判断手机通知栏是否启用, 如果不启用,跳转到页面开启
 */
private fun processNotification(){
    var account = DataStoreUtils.getAccount()
    TagUtils.d("viewpager是否启用:${ChatNotificationUtils.isNotificationEnabled()}")
    if(!TextUtils.isEmpty(account) && !ChatNotificationUtils.isNotificationEnabled()){
        NotificationSettingMsg().showNotificationSetting(requireActivity(), viewpager_container_root, false, object : BasePopupWindow.IOnDismissListener{
            override fun onDismiss() {
                //
            }
        })
    }
}
经验分享 程序员 微信小程序 职场和发展