- Java 98%
- Kotlin 1.1%
- Python 0.5%
- Shell 0.3%
### Description This fixes a crash when opening **Settings → Downloads → Choose data folder** while Android reports an external/public storage volume that is registered but currently unavailable. `DataFolderAdapter` was using `List.of(...)` with the arrays returned by Android storage directory APIs. In the unavailable-volume case, those arrays can contain `null` entries. `List.of(...)` rejects null elements and throws before the existing `isWritable(dir)` filtering logic can run. This change uses `Arrays.asList(...)` instead, preserving the existing flow where non-writable or null storage entries are filtered by `isWritable(dir)`. Validation performed: - Reproduced the crash locally with a mounted/unmounted public storage volume scenario. - Verified the crash no longer occurs after the fix. - Verified the chooser updates from 4 entries → 2 entries when the public volume is unavailable. - Verified the chooser returns to 4 entries when the public volume is available again. Closes: #7919 ### Checklist - [x] I have read the contribution guidelines: https://github.com/AntennaPod/AntennaPod/blob/develop/CONTRIBUTING.md#submit-a-pull-request - [x] I have performed a self-review of my code, going through my changes line by line and carefully considering why this line change is necessary - [x] I have run the automated code checks using `./gradlew checkstyle lint` - [x] My code follows the style guidelines of the AntennaPod project: https://antennapod.org/contribute/develop/app/code-style - [x] I have mentioned the corresponding issue and the relevant keyword (e.g., "Closes: #xy") in the description (see https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) - [ ] If it is a core feature, I have added automated tests |
||
|---|---|---|
| .github | ||
| .idea | ||
| app | ||
| app-wearos | ||
| config | ||
| event | ||
| gradle | ||
| model | ||
| net | ||
| parser | ||
| playback | ||
| scripts | ||
| storage | ||
| system | ||
| ui | ||
| .editorconfig | ||
| .gitignore | ||
| .gitmodules | ||
| AGENTS.md | ||
| build.gradle | ||
| CLAUDE.md | ||
| common.gradle | ||
| CONTRIBUTING.md | ||
| CONTRIBUTORS.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| playFlavor.gradle | ||
| README.md | ||
| settings.gradle | ||
AntennaPod
This is the official repository of AntennaPod, the easy-to-use, flexible and open-source podcast manager for Android.

Feedback
You can use the AntennaPod Forum for discussions about the app or just podcasting in general.
Bug reports and feature requests can be submitted here (please read the instructions on how to report a bug and how to submit a feature request first!).
We also hold regular community calls to discuss anything AntennaPod-related. Come join the next call!
Help to test AntennaPod
AntennaPod has many users and we don't want them to run into trouble when we add a new feature. It's important that we have a significant group test our app, so that we know all possible combinations of phones, Android versions and use cases work as expected. Check out our wiki on how to join our Beta testing program! If a bug is reported during the beta period, chances are high that it will be fixed before the upcoming stable version. If it is reported later, fixing might take another full beta cycle. So definitely let us know if something is not right.
License
AntennaPod is licensed under the GNU General Public License (GPL-3.0). You can find the license text in the LICENSE file.
Translating AntennaPod
If you want to translate AntennaPod into another language, you can visit our Weblate page.
Building AntennaPod
You can build AntennaPod just like any other Android project. Refer to the instructions for more details.

