External Storage Permission is gone after device restart (android) #408

Closed
opened 2026-04-24 23:20:00 +02:00 by adam · 4 comments
Owner

Originally created by @pagdot on GitHub (Jan 16, 2023).

Steps to reproduce

  1. Add local folder
  2. Download audiobook to local folder
  3. Reboot device

Expected behaviour

Audiobooks should still be able to play

Actual behaviour

  • Playback of local media fails
  • audiobook disappear on scan of local folder
  • if folder is removed and readded audiobooks appear again, but order of files is wrong; audiobooks aren't synced with server anymore

Behaviour seems similar to #172 I can try a reinstall, but would try to help with debugging first

Environment data

Audiobookshelf Version:

  • Android App?
  • iOS App?

Android Issue

Android version: 0.9.57-beta (will update and try again and report back)

Device model: Samsung Galaxy Note 9

Stock or customized system: Lineage OS 10 (rooted)

iOS Issue

iOS Version:

iPhone model:

Originally created by @pagdot on GitHub (Jan 16, 2023). ### Steps to reproduce 1. Add local folder 2. Download audiobook to local folder 3. Reboot device ### Expected behaviour Audiobooks should still be able to play ### Actual behaviour - Playback of local media fails - audiobook disappear on scan of local folder - if folder is removed and readded audiobooks appear again, but order of files is wrong; audiobooks aren't synced with server anymore Behaviour seems similar to #172 I can try a reinstall, but would try to help with debugging first ### Environment data Audiobookshelf Version: - [X] Android App? - [ ] iOS App? #### Android Issue Android version: 0.9.57-beta (will update and try again and report back) Device model: Samsung Galaxy Note 9 Stock or customized system: Lineage OS 10 (rooted) #### iOS Issue iOS Version: iPhone model:
adam added the bug label 2026-04-24 23:20:00 +02:00
adam closed this issue 2026-04-24 23:20:00 +02:00
Author
Owner

@Hallo951 commented on GitHub (Jan 19, 2023):

Yes, it's the same for me...

@Hallo951 commented on GitHub (Jan 19, 2023): Yes, it's the same for me...
Author
Owner

@pagdot commented on GitHub (Jan 23, 2023):

Still happens with 0.9.60

Got a crash log when trying to play a local file after restarting the device:

01-23 09:31:43.362 13291 13291 E AndroidRuntime: FATAL EXCEPTION: main
01-23 09:31:43.362 13291 13291 E AndroidRuntime: Process: com.audiobookshelf.app, PID: 13291
01-23 09:31:43.362 13291 13291 E AndroidRuntime: java.lang.SecurityException: Permission Denial: reading com.android.externalstorage.ExternalStorageProvider uri content://com.android.externalstorage.documents/tree/primary%3AAudiobookshelf/document/primary%3AAudiobookshelf%2FThe%20Expanse%20-%20Leviathan%20Wakes%2Fcover.jpg from pid=13291, uid=10141 requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.os.Parcel.createException(Parcel.java:2071)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.os.Parcel.readException(Parcel.java:2039)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:151)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:705)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1687)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1503)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1420)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.graphics.ImageDecoder$ContentResolverSource.createImageDecoder(ImageDecoder.java:277)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.graphics.ImageDecoder.decodeBitmapImpl(ImageDecoder.java:1847)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.graphics.ImageDecoder.decodeBitmap(ImageDecoder.java:1945)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at com.audiobookshelf.app.data.PlaybackSession.getMediaMetadataCompat(PlaybackSession.kt:148)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at com.audiobookshelf.app.player.PlayerNotificationService.preparePlayer(PlayerNotificationService.kt:383)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at com.audiobookshelf.app.plugins.AbsAudioPlayer.prepareLibraryItem$lambda-2$lambda-1(AbsAudioPlayer.kt:197)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at com.audiobookshelf.app.plugins.AbsAudioPlayer.$r8$lambda$elS5GHLSiUYk__ISyUBJFs0qyxA(Unknown Source:0)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at com.audiobookshelf.app.plugins.AbsAudioPlayer$$ExternalSyntheticLambda10.run(Unknown Source:10)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:883)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:100)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:214)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7356)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
01-23 09:31:43.362 13291 13291 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)

also found a few exceptions similar to

01-23 09:19:29.458 25091 25114 E DatabaseUtils: java.lang.SecurityException: Permission Denial: reading com.android.externalstorage.ExternalStorageProvider uri content://com.android.externalstorage.documents/tree/primary%3AAudiobookshelf/document/primary%3AAudiobookshelf%2FThe%20Expanse%20-%20Leviathan%20Wakes%2Fcover.jpg from pid=25420, uid=10141 requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
01-23 09:19:29.458 25091 25114 E DatabaseUtils:         at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:729)
01-23 09:19:29.458 25091 25114 E DatabaseUtils:         at com.android.externalstorage.ExternalStorageProvider.enforceReadPermissionInner(ExternalStorageProvider.java:134)
01-23 09:19:29.458 25091 25114 E DatabaseUtils:         at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:602)
01-23 09:19:29.458 25091 25114 E DatabaseUtils:         at android.content.ContentProvider$Transport.enforceFilePermission(ContentProvider.java:593)
01-23 09:19:29.458 25091 25114 E DatabaseUtils:         at android.content.ContentProvider$Transport.openTypedAssetFile(ContentProvider.java:507)
01-23 09:19:29.458 25091 25114 E DatabaseUtils:         at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:307)
01-23 09:19:29.458 25091 25114 E DatabaseUtils:         at android.os.Binder.execTransactInternal(Binder.java:1021)
01-23 09:19:29.458 25091 25114 E DatabaseUtils:         at android.os.Binder.execTransact(Binder.java:994)
01-23 09:19:29.496 25091 25114 I chatty  : uid=10082(com.android.externalstorage) Binder:25091_2 identical 1 line
01-23 09:19:29.498 25091 25114 E DatabaseUtils: Writing exception to parcel

will try to find out more

@pagdot commented on GitHub (Jan 23, 2023): Still happens with 0.9.60 Got a crash log when trying to play a local file after restarting the device: ``` 01-23 09:31:43.362 13291 13291 E AndroidRuntime: FATAL EXCEPTION: main 01-23 09:31:43.362 13291 13291 E AndroidRuntime: Process: com.audiobookshelf.app, PID: 13291 01-23 09:31:43.362 13291 13291 E AndroidRuntime: java.lang.SecurityException: Permission Denial: reading com.android.externalstorage.ExternalStorageProvider uri content://com.android.externalstorage.documents/tree/primary%3AAudiobookshelf/document/primary%3AAudiobookshelf%2FThe%20Expanse%20-%20Leviathan%20Wakes%2Fcover.jpg from pid=13291, uid=10141 requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.os.Parcel.createException(Parcel.java:2071) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:2039) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:151) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:705) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1687) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1503) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1420) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.graphics.ImageDecoder$ContentResolverSource.createImageDecoder(ImageDecoder.java:277) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.graphics.ImageDecoder.decodeBitmapImpl(ImageDecoder.java:1847) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.graphics.ImageDecoder.decodeBitmap(ImageDecoder.java:1945) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at com.audiobookshelf.app.data.PlaybackSession.getMediaMetadataCompat(PlaybackSession.kt:148) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at com.audiobookshelf.app.player.PlayerNotificationService.preparePlayer(PlayerNotificationService.kt:383) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at com.audiobookshelf.app.plugins.AbsAudioPlayer.prepareLibraryItem$lambda-2$lambda-1(AbsAudioPlayer.kt:197) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at com.audiobookshelf.app.plugins.AbsAudioPlayer.$r8$lambda$elS5GHLSiUYk__ISyUBJFs0qyxA(Unknown Source:0) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at com.audiobookshelf.app.plugins.AbsAudioPlayer$$ExternalSyntheticLambda10.run(Unknown Source:10) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:883) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:100) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7356) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491) 01-23 09:31:43.362 13291 13291 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940) ``` also found a few exceptions similar to ``` 01-23 09:19:29.458 25091 25114 E DatabaseUtils: java.lang.SecurityException: Permission Denial: reading com.android.externalstorage.ExternalStorageProvider uri content://com.android.externalstorage.documents/tree/primary%3AAudiobookshelf/document/primary%3AAudiobookshelf%2FThe%20Expanse%20-%20Leviathan%20Wakes%2Fcover.jpg from pid=25420, uid=10141 requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs 01-23 09:19:29.458 25091 25114 E DatabaseUtils: at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:729) 01-23 09:19:29.458 25091 25114 E DatabaseUtils: at com.android.externalstorage.ExternalStorageProvider.enforceReadPermissionInner(ExternalStorageProvider.java:134) 01-23 09:19:29.458 25091 25114 E DatabaseUtils: at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:602) 01-23 09:19:29.458 25091 25114 E DatabaseUtils: at android.content.ContentProvider$Transport.enforceFilePermission(ContentProvider.java:593) 01-23 09:19:29.458 25091 25114 E DatabaseUtils: at android.content.ContentProvider$Transport.openTypedAssetFile(ContentProvider.java:507) 01-23 09:19:29.458 25091 25114 E DatabaseUtils: at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:307) 01-23 09:19:29.458 25091 25114 E DatabaseUtils: at android.os.Binder.execTransactInternal(Binder.java:1021) 01-23 09:19:29.458 25091 25114 E DatabaseUtils: at android.os.Binder.execTransact(Binder.java:994) 01-23 09:19:29.496 25091 25114 I chatty : uid=10082(com.android.externalstorage) Binder:25091_2 identical 1 line 01-23 09:19:29.498 25091 25114 E DatabaseUtils: Writing exception to parcel ``` will try to find out more
Author
Owner

@advplyr commented on GitHub (Jan 28, 2023):

I think this will be fixed with the next release.

We use SimpleStorage for selecting folders and they are now persisting these permissions for us.
https://github.com/anggrayudi/SimpleStorage

@advplyr commented on GitHub (Jan 28, 2023): I think this will be fixed with the next release. We use SimpleStorage for selecting folders and they are now persisting these permissions for us. https://github.com/anggrayudi/SimpleStorage
Author
Owner

@advplyr commented on GitHub (Jan 31, 2023):

Hopefully resolved in v0.9.61-beta. You may need to restart to lose the permissions and grant them again.

@advplyr commented on GitHub (Jan 31, 2023): Hopefully resolved in [v0.9.61-beta](https://github.com/advplyr/audiobookshelf-app/releases/tag/v0.9.61-beta). You may need to restart to lose the permissions and grant them again.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf-app#408