Originally created by @pagdot on GitHub (Jan 16, 2023).
Steps to reproduce
Add local folder
Download audiobook to local folder
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
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
@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
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @pagdot on GitHub (Jan 16, 2023).
Steps to reproduce
Expected behaviour
Audiobooks should still be able to play
Actual behaviour
Behaviour seems similar to #172 I can try a reinstall, but would try to help with debugging first
Environment data
Audiobookshelf Version:
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:
@Hallo951 commented on GitHub (Jan 19, 2023):
Yes, it's the same for me...
@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:
also found a few exceptions similar to
will try to find out more
@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 31, 2023):
Hopefully resolved in v0.9.61-beta. You may need to restart to lose the permissions and grant them again.