A podcast manager for Android https://antennapod.org
  • Java 98%
  • Kotlin 1.1%
  • Python 0.5%
  • Shell 0.3%
Find a file
Geoffrey Sisco 95f94ca78a
Fix crash when choosing data folder (#8505)
### 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
2026-05-31 17:16:42 +02:00
.github Update CI checks to use node 24 actions (#8490) 2026-05-28 11:23:51 +02:00
.idea Add xml indention to code style config (#7993) 2025-09-15 20:46:08 +02:00
app Parental Control: allow to protect 'add feed' screen with a password (#8281) 2026-05-28 10:11:48 +02:00
app-wearos Migrate Gradle dependencies to version catalogs (#8443) 2026-05-17 07:49:45 +02:00
config Make sure to close all streams and cursors, enable spotbugs (#8357) 2026-03-22 19:39:14 +01:00
event Migrate Gradle dependencies to version catalogs (#8443) 2026-05-17 07:49:45 +02:00
gradle Migrate Gradle dependencies to version catalogs (#8443) 2026-05-17 07:49:45 +02:00
model Migrate Gradle dependencies to version catalogs (#8443) 2026-05-17 07:49:45 +02:00
net Work around incorrect redirects duplicating subscriptions on sync (#8444) 2026-05-19 09:34:24 +02:00
parser More efficient chapter parser dispatch (#8416) 2026-05-28 14:24:55 +02:00
playback Migrate Gradle dependencies to version catalogs (#8443) 2026-05-17 07:49:45 +02:00
scripts Add workflows to ping about play reviews (#7177) 2026-04-04 22:18:27 +02:00
storage Parental Control: allow to protect 'add feed' screen with a password (#8281) 2026-05-28 10:11:48 +02:00
system Migrate Gradle dependencies to version catalogs (#8443) 2026-05-17 07:49:45 +02:00
ui Fix crash when choosing data folder (#8505) 2026-05-31 17:16:42 +02:00
.editorconfig Basic WearOS app (#8396) 2026-05-14 14:17:54 +02:00
.gitignore Basic WearOS app (#8396) 2026-05-14 14:17:54 +02:00
.gitmodules Update screenshots 2026-01-11 15:50:31 +01:00
AGENTS.md Migrate Gradle dependencies to version catalogs (#8443) 2026-05-17 07:49:45 +02:00
build.gradle Migrate Gradle dependencies to version catalogs (#8443) 2026-05-17 07:49:45 +02:00
CLAUDE.md Tweak agent instructions (#8400) 2026-04-19 15:11:38 +02:00
common.gradle Migrate Gradle dependencies to version catalogs (#8443) 2026-05-17 07:49:45 +02:00
CONTRIBUTING.md Lint all modules (#8371) 2026-03-28 20:48:25 +01:00
CONTRIBUTORS.md Update contributors (#8188) 2025-12-27 22:04:16 +01:00
gradle.properties Upgrade AGP and Gradle for Java 23 support (#7529) 2024-11-28 19:43:16 +01:00
gradlew Update AGP and Gradle (#6954) 2024-03-04 22:17:44 +01:00
gradlew.bat Update AGP and Gradle (#6954) 2024-03-04 22:17:44 +01:00
LICENSE Relicense under the GPL 2020-11-26 19:50:20 +01:00
playFlavor.gradle Update AGP to 7.4.0 (#5655) 2023-04-01 23:16:53 +02:00
README.md Update readme (#8335) 2026-03-12 21:09:18 +01:00
settings.gradle Basic WearOS app (#8396) 2026-05-14 14:17:54 +02:00

AntennaPod

GitHub check runs License: GPL v3 GitHub Release https://img.shields.io/github/commits-since/AntennaPod/AntennaPod/latest/develop Translations on Weblate Good first issue

This is the official repository of AntennaPod, the easy-to-use, flexible and open-source podcast manager for Android.

Get it on Google Play Get it on F-Droid

Screenshot 0 Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5

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.