最近,一些手机已经发布了Android 12,一些用户开始抱怨存储访问:他们不能再将特定文件夹授予应用程序访问权限(例如,“下载”文件夹)。
该消息显示:“无法使用此文件夹。为保护您的隐私,请选择另一个文件夹”。
这个问题很容易重现,我花了一些时间寻找解决方法,但是我找不到一个简单的方法。 似乎唯一的解决方法是请求完全存储访问权限(但这不是我想做的,这很糟糕),或者要求用户创建一个新文件夹,这将成为UX的绝对痛苦。
我不明白的是:谷歌是否在Android 12上 - 没有任何文档 - 废弃了SAF?这是个bug还是功能?我真的很困惑。 Android 11已经很难迁移,现在我担心12会变得更加痛苦。
这里是代码,但没有什么花哨的东西:
该消息显示:“无法使用此文件夹。为保护您的隐私,请选择另一个文件夹”。
这个问题很容易重现,我花了一些时间寻找解决方法,但是我找不到一个简单的方法。 似乎唯一的解决方法是请求完全存储访问权限(但这不是我想做的,这很糟糕),或者要求用户创建一个新文件夹,这将成为UX的绝对痛苦。
我不明白的是:谷歌是否在Android 12上 - 没有任何文档 - 废弃了SAF?这是个bug还是功能?我真的很困惑。 Android 11已经很难迁移,现在我担心12会变得更加痛苦。
这里是代码,但没有什么花哨的东西:
/*
* Requests Scoped Storage access authorization
*/
@RequiresApi(Build.VERSION_CODES.Q)
@JvmStatic
fun requestScopedStorageAccess(activity: Activity, requestCode: Int) {
val storageManager = activity.getSystemService(Context.STORAGE_SERVICE) as StorageManager
val intent = storageManager.primaryStorageVolume.createOpenDocumentTreeIntent()
activity.startActivityForResult(intent, requestCode)
}
我认为值得注意的是,在Android 10和11上一切都运行完美,因此问题实际上是关于Android 12的。