I have noticed the following exception (Firebase Crashlytics):
Fatal Exception: java.lang.SecurityException
No persistable permission grants found for UID 10434 and Uri content:/...
android.content.ContentResolver.takePersistableUriPermission (ContentResolver.java:2952)
Caused by android.os.RemoteException
Remote stack trace: at com.android.server.uri.UriGrantsManagerService.takePersistableUriPermission(UriGrantsManagerService.java:385) at android.app.IUriGrantsManager$Stub.onTransact(IUriGrantsManager.java:139) at android.os.Binder.execTransactInternal(Binder.java:1375) at android.os.Binder.execTransact(Binder.java:1311)
When I try to call ContentResolver.takePersistableUriPermission
:
val safResultLauncher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.StartActivityForResult()
) { activityResult ->
coroutineScope.launch {
if (activityResult.resultCode == Activity.RESULT_OK) {
val treeUri = activityResult.data?.data
if (treeUri != null) {
context.contentResolver.takePersistableUriPermission(
treeUri,
Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
)
}
}
}
}
// select a folder
try {
safResultLauncher.launch(Intent.ACTION_OPEN_DOCUMENT_TREE)
} catch (e: Throwable) {
// ...
}
Happens only for Samsung devices (Android 13-14):
- Galaxy S24 Ultra
- Galaxy S24+
- Galaxy S21+ 5G
- Galaxy S20 FE 5G
- Galaxy Z Fold5
- Galaxy Z Flip4
- Galaxy Z Flip4
- Galaxy A24
- Galaxy A15 5G
- Galaxy A15
- Galaxy A14 5G