Skip to content

Releases: TutorialsAndroid/FilePicker

New Release v10.1.2

22 May 12:22

Choose a tag to compare

Changelog

v10.1.2

Added

  • Added file size filtering support using min_file_size and max_file_size.
  • Added support for selecting files below a specific size.
  • Added support for selecting files above a specific size.
  • Added support for selecting files within a minimum and maximum size range.
  • Added support for combining file size filtering with extension filtering.
  • Added examples for selecting video files below a specific file size.
  • Added examples for selecting PDF files below a specific file size.
  • Added examples for selecting large files such as videos between 100 MB and 2 GB.

Improved

  • Improved DialogProperties configuration by adding file size filter options.
  • Improved file filtering behavior for use cases where apps need to restrict selectable files by size.
  • Improved README documentation with detailed file size examples.
  • Improved sample app usage guidance for file size filtering.

Notes

  • File size values are provided in bytes.
  • -1L means no size limit.
  • File size filtering works with all file types, not only videos.
  • Directories remain visible so users can continue browsing folders.
  • File size filtering does not bypass Android storage permissions or scoped storage restrictions.

New Release v10.1.1

22 May 11:38

Choose a tag to compare

New in v10.1.1

  • Added programmatic dialog width and height customization.
  • Added responsive percentage-based dialog sizing for tablets, foldables, landscape mode, and ultra-wide screens.
  • Added direct layout-param based sizing support using ViewGroup.LayoutParams.MATCH_PARENT, WRAP_CONTENT, or exact pixel values.
  • Documented the GitHub issue solution for changing dialog width and height before showing the picker.
  • Improved README examples for dialog theme and dialog size customization.

FilePicker v10.0.1 — Modern Android Storage & Permission Update

22 May 11:14

Choose a tag to compare

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.

FilePicker v10.0.0 — Modern Android Storage & Permission Update

22 May 11:06

Choose a tag to compare

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.

Added support for Android 13 and above

05 Sep 19:13

Choose a tag to compare

v9.0.1

migrating to maven central soon

v8.0.19

12 Mar 13:28

Choose a tag to compare

Removed Preference Implementation

New Version

10 Jan 14:41
3af4259

Choose a tag to compare

downgraded to api 19.

New Version

06 Dec 13:24
2977beb

Choose a tag to compare

Added to show hidden files

New Version

01 Oct 07:38

Choose a tag to compare

Bugs fixes and improvements

New Version

12 Jun 12:56
06ead96

Choose a tag to compare

Bug Fixes