guolindev / PermissionX

An open source Android library that makes handling runtime permissions extremely easy.
Apache License 2.0
3.34k stars 386 forks source link

android13 ColorOS系统申请读写权限,WRITE_EXTERNAL_STORAGE申请失败 #258

Open cl136787252 opened 8 months ago

cl136787252 commented 8 months ago

`class MainFragment : Fragment() {

private var _binding: FragmentMainBinding? = null

private val binding get() = _binding!!

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    _binding = FragmentMainBinding.inflate(inflater, container, false)
    return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

// val context = context!! binding.makeRequestBtn.setOnClickListener { val requestPermissions: List = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){ listOf( Manifest.permission.READ_MEDIA_AUDIO, Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.READ_MEDIA_VIDEO, Manifest.permission.WRITE_EXTERNAL_STORAGE ) }else{ listOf( Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE ) }

        PermissionX.init(this)

// .permissions( // Manifest.permission.CAMERA, // Manifest.permission.ACCESS_FINE_LOCATION, // Manifest.permission.RECORD_AUDIO, //// Manifest.permission.READ_CALENDAR, //// Manifest.permission.READ_CALL_LOG, //// Manifest.permission.READ_CONTACTS, //// Manifest.permission.READ_PHONE_STATE, //// Manifest.permission.BODY_SENSORS, //// Manifest.permission.ACTIVITY_RECOGNITION, //// Manifest.permission.SEND_SMS, //// Manifest.permission.READ_EXTERNAL_STORAGE // ) .permissions(requestPermissions) .setDialogTintColor(Color.parseColor("#1972e8"), Color.parseColor("#8ab6f5")) .onExplainRequestReason { scope, deniedList, beforeRequest -> val message = "PermissionX needs following permissions to continue" scope.showRequestReasonDialog(deniedList, message, "Allow", "Deny") // val message = "Please allow the following permissions in settings" // val dialog = CustomDialogFragment(message, deniedList) // scope.showRequestReasonDialog(dialog) } .onForwardToSettings { scope, deniedList -> val message = "Please allow following permissions in settings" scope.showForwardToSettingsDialog(deniedList, message, "Allow", "Deny") } .request { allGranted, grantedList, deniedList -> if (allGranted) { Toast.makeText(activity, "All permissions are granted", Toast.LENGTH_SHORT).show() } else { Toast.makeText(activity, "The following permissions are denied:$deniedList", Toast.LENGTH_SHORT).show() } } } }

override fun onDestroyView() {
    super.onDestroyView()
    _binding = null
}

}

`

用一加的手机升级到ColorOS系统。android版本是13,申请SD卡读写读写权限,读的权限都能正常授权,就是WRITE_EXTERNAL_STORAGE一直授权不通过,我反复验证其他android13的手机。SD卡的读写权限都能成功授权。 0214a291897245a6aad55588ffe30842

DonkeyTomy commented 8 months ago

WRITE_EXTERNAL_STORAGE这个权限在13已经被摈弃了,不让申请了 可以去搜搜MANAGE_EXTERNAL_STORAGE跟ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION