Skip to content

FilePicker v10.0.0 — Modern Android Storage & Permission Update

Choose a tag to compare

@TutorialsAndroid TutorialsAndroid released this 22 May 11:06
· 10 commits to master since this release

FilePicker v10.0.0

FilePicker v10.0.0 is a major update focused on modern Android compatibility, safer storage access handling, improved permission flow, and updated documentation for Play Store compliance.

This release is recommended for all users who are still using older v9.x versions.


🚀 What’s New

✅ Android 13+ Support Improvements

FilePicker now includes improved support for Android 13 and above by handling the newer granular media permissions:

  • READ_MEDIA_IMAGES
  • READ_MEDIA_VIDEO
  • READ_MEDIA_AUDIO

These permissions are required on Android 13+ when accessing media files created by other apps.


✅ Android 11+ Storage Compatibility

Android 11 introduced stricter scoped storage rules. Since this library is a raw file-path based picker, apps that need broad access to all file types may need to request:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

Use this permission only when your app’s core functionality genuinely requires broad file access, such as:

  • File manager apps
  • Backup and restore apps
  • Antivirus or storage management apps
  • Document management apps

For normal media selection, consider using Android’s recommended storage APIs instead.


✅ minSdk Updated to API 23+

This version is designed for:

minSdk 23

The library now focuses on Android 6.0 and above, where runtime permission handling is required.


🛡️ Play Store Compliance Notes

If your app uses MANAGE_EXTERNAL_STORAGE, make sure your app complies with Google Play’s All Files Access policy.

Google Play may reject apps that request broad storage access without a valid core use case.

Before publishing, check:

  • Whether your app really needs broad file access
  • Whether Android Storage Access Framework can be used instead
  • Whether Android Photo Picker or MediaStore is enough for your use case
  • Whether you need to complete the Play Console permissions declaration

This library supports raw path-based file selection, but developers are responsible for using permissions correctly in their own apps.


✨ Improvements

  • Improved Android version-specific permission handling
  • Improved support for modern Android storage behavior
  • Safer file and folder browsing behavior
  • Improved handling for hidden files
  • Improved extension filtering
  • Improved single and multiple selection behavior
  • Improved documentation for Android 11, Android 13, and Android 14+
  • Updated sample usage with modern permission flow
  • Updated README with detailed Play Store guidance
  • Updated migration notes from v9.x to v10.0.0

🐛 Fixes

  • Fixed possible checkbox listener crash
  • Fixed recycled list item selection issues
  • Fixed outdated /sdcard default path usage
  • Fixed safer handling of unreadable directories
  • Fixed safer handling of invalid root, offset, and error directories
  • Fixed inconsistent selected item ordering
  • Fixed outdated runtime permission guidance from older Android versions

📦 Installation

Maven Central

dependencies {
    implementation 'io.github.tutorialsandroid:filepicker:10.0.0'
}

JitPack

JitPack support for older versions is no longer recommended.

If you are using v9.x from JitPack, migrate to Maven Central and update to v10.0.0.


🧩 Basic Usage

DialogProperties properties = new DialogProperties();
properties.selection_mode = DialogConfigs.SINGLE_MODE;
properties.selection_type = DialogConfigs.FILE_SELECT;
properties.root = new File(DialogConfigs.DEFAULT_DIR);
properties.offset = new File(DialogConfigs.DEFAULT_DIR);
properties.error_dir = new File(DialogConfigs.DEFAULT_DIR);
properties.extensions = null;
properties.show_hidden_files = false;

FilePickerDialog dialog = new FilePickerDialog(MainActivity.this, properties);
dialog.setTitle("Select File");
dialog.setPositiveBtnName("Select");
dialog.setNegativeBtnName("Cancel");

dialog.setDialogSelectionListener(files -> {
    for (String path : files) {
        // Handle selected file path
    }
});

dialog.show();

🎨 Custom Dialog Theme

You can pass a custom theme while creating the dialog:

FilePickerDialog dialog = new FilePickerDialog(
        MainActivity.this,
        properties,
        R.style.YourCustomFilePickerTheme
);

Example:

<style name="YourCustomFilePickerTheme" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
    <item name="colorPrimary">#6750A4</item>
    <item name="colorAccent">#6750A4</item>
    <item name="android:fontFamily">sans</item>
</style>

⚠️ Breaking / Important Changes

  • Minimum SDK is now API 23.
  • Apps targeting modern Android versions must handle storage permissions properly.
  • Android 11+ broad file access may require MANAGE_EXTERNAL_STORAGE.
  • Android 13+ media access requires granular media permissions.
  • Developers should review Play Store policy before publishing apps that use All Files Access.
  • v9.x permission examples should be replaced with the updated v10 documentation.

🔄 Migration from v9.x

If you are upgrading from v9.x:

  1. Update dependency version to 10.0.0.
  2. Update minSdk to 23 if not already done.
  3. Replace old permission handling code.
  4. Use modern Activity Result APIs where possible.
  5. Review Android 11+ storage behavior.
  6. Review Android 13+ media permissions.
  7. Review Play Store policy if using MANAGE_EXTERNAL_STORAGE.
  8. Update README/sample code in your app if you copied old v9.x examples.

🙏 Thanks

Thanks to all contributors and users who reported issues, tested the library, and helped improve FilePicker.

This release addresses multiple older v9.x issues and brings the library closer to modern Android requirements.


## Release label

Leave it as normal **Latest release**.

Do **not** mark as pre-release, because this is your stable major release.

Also upload only if you have an `.aar`, `.jar`, or source ZIP. If you are publishing to Maven Central, attaching binaries is optional.