Simple, Powerful and Beautiful Android Image/Video/Audio Picker 😎

Overview

Jitpack Downloads Stars API ktlint Latestver License

Simple, Powerful and Beautiful Android Image/Video/Audio Picker 😎

Features 😍

  • No need check storage permission 😉
  • Single and multiple selection
  • Supported RTL and LTR list direction (default=LTR)
  • Supported image, video or audio (default=image)
  • Supported custom title
  • Supported custom colors
  • Supported dynamic span count (default=2)
  • Limit max item selection (default=1)
  • Show file directory
  • Show file size

Screenshots

Image Video Audio

Download

Step 1. Add it in your root build.gradle at the end of repositories:

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

Step 2. Add the dependency

dependencies {
        implementation 'com.github.majidarabi:AndroidFilePicker:$LATEST_VERSION'
}

Usage

Kotlin

showFilePicker(
    limitItemSelection = 5,
    listDirection = ListDirection.RTL,
    accentColor = ContextCompat.getColor(this@MainActivity, R.color.purple_700),
    titleTextColor = ContextCompat.getColor(this@MainActivity, R.color.purple_700),
    onSubmitClickListener = object : OnSubmitClickListener {
        override fun onClick(files: List) {
            // Do something here with selected files
        }
    },
    onItemClickListener = object : OnItemClickListener {
        override fun onClick(media: Media, position: Int, adapter: ItemAdapter) {
            if (!media.file.isDirectory) {
                adapter.setSelected(position)
            }
        }
    }
)

Java

new FilePicker.Builder(this)
            .setLimitItemSelection(3)
            .setAccentColor(Color.CYAN)
            .setCancellable(false)
            .setOnSubmitClickListener(files -> {
                // Do something here with selected files
            })
            .setOnItemClickListener((media, pos, adapter) -> {
                if (!media.getFile().isDirectory()) {
                    adapter.setSelected(pos);
                }
            })
            .buildAndShow();

Author

Majid Arabi

You might also like...
AndroidFilePicker - android library which will help you to pick any type of media file in your application

AndroidFilePicker is android library which will help you to pick any type of media file in your application. No need to manage any kind of extra permission or result method override. Just create library class instance and use it or also modify ui as your requirement.

Awesome Image Picker library will pick images/gifs with beautiful interface. Supports image or gif, Single and Multiple Image selection.

Awesome Image Picker Awesome Image Picker library will pick images/gifs with beautiful interface. Supports image or gif, Single and Multiple Image sel

A simple video calling application uses Firebase database and WebRTC API that enables you Peer-to-Peer Full-HD video and audio connection.
A simple video calling application uses Firebase database and WebRTC API that enables you Peer-to-Peer Full-HD video and audio connection.

A simple video calling application uses Firebase database and WebRTC API that enables you Peer-to-Peer Full-HD video and audio connection.

Pix is a Whatsapp image picker replica. with this, you can integrate an image picker just like WhatsApp.
Pix is a Whatsapp image picker replica. with this, you can integrate an image picker just like WhatsApp.

Pix (WhatsApp Style Image and Video Picker) Pix is a WhatsApp image picker replica. with this you can integrate a image picker just like WhatsApp. Upc

Facebook-Styled-Image-Picker - Facebook Styled Image Picker

Facebook-Styled-Image-Picker Facebook Styled Gallery Files picker. One or multip

Android Country Picker is a Kotlin-first, flexible and powerful Android library that allows to integrate Country Picker with just a few lines.
Android Country Picker is a Kotlin-first, flexible and powerful Android library that allows to integrate Country Picker with just a few lines.

1. Add dependency dependencies { implementation 'com.hbb20:android-country-picker:X.Y.Z' } For latest version, 2. Decide your use-case

A Discord audio player that streams audio from the desktop.

Synced A Discord audio player that streams audio from the desktop. Synced runs as a bot that plays audio to your selected Discord server. You can cont

Fermata Media Player is a free, open source audio and video player with a simple and intuitive interface.

Fermata Media Player About Fermata Media Player is a free, open source audio and video player with a simple and intuitive interface. It is focused on

Android Combined Application for chat, audio/video calls, and broadcast to millions of web and app users using VdoTok SDK.
Android Combined Application for chat, audio/video calls, and broadcast to millions of web and app users using VdoTok SDK.

Android Combined Application for chat, audio/video calls, and broadcast to millions of web and app users using VdoTok SDK.

An instant messaging and audio-video calling app
An instant messaging and audio-video calling app

Babble Babble is a chatting and calling application for anyone with an Android phone and an Internet connection. Just sign up using your phone number

High-quality Interactive Audio/Video Android SDK

High-quality Interactive Audio/Video Android SDK

Video/Audio Downloader for Android, written with Jetpack Compose.
Video/Audio Downloader for Android, written with Jetpack Compose.

Seal Video/Audio Downloader for Android, written with Jetpack Compose.

Image Picker with Customizable UI for Android, Pick an image from Gallery
Image Picker with Customizable UI for Android, Pick an image from Gallery

Image Picker A Image Picker Library for Android (Supports Android 12) with fully

AndroidPhotoFilters aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image media.
AndroidPhotoFilters aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image media.

PhotoFiltersSDK PhotoFiltersSDK aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image medi

AndroidPhotoFilters aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image media.
AndroidPhotoFilters aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image media.

PhotoFiltersSDK PhotoFiltersSDK aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image medi

Big image viewer supporting pan and zoom, with very little memory usage and full featured image loading choices. Powered by Subsampling Scale Image View, Fresco, Glide, and Picasso. Even with gif and webp support! 🍻
Big image viewer supporting pan and zoom, with very little memory usage and full featured image loading choices. Powered by Subsampling Scale Image View, Fresco, Glide, and Picasso. Even with gif and webp support! 🍻

BigImageViewer Big image viewer supporting pan and zoom, with very little memory usage and full featured image loading choices. Powered by Subsampling

Simple and lightweight, yet polished and powerful Android video player based on ExoPlayer
Simple and lightweight, yet polished and powerful Android video player based on ExoPlayer

Just (Video) Player Android video player based on ExoPlayer It uses ExoPlayer's extension-ffmpeg with all its audio formats enabled (it can handle eve

 🗨️ Beautiful Dialog is a Simple and Beautiful custom dialog
🗨️ Beautiful Dialog is a Simple and Beautiful custom dialog

Beautiful Dialog 🗨️ Beautiful Dialog is a Simple and Beautiful custom dialog. Screenshots Including in your project Gradle Add below codes to your ro

KotlinScript that generate Reel from a given image, text and audio

ReelScriot KotlinScript that generate Reel from a given image, text and audio 80f4ea39-a7da-4f21-b0ff-7a17836a1cd0.mp4 6691b51d-d7a3-4915-ae41-8bec400

Comments
  • IllegalArgumentException

    IllegalArgumentException

    E/AndroidRuntime: FATAL EXCEPTION: main Process: com.info, PID: 15280 java.lang.IllegalArgumentException at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:77) at com.github.file_picker.extension.FileExtKt.getMusicCoverArt(FileExt.kt:55) at com.github.file_picker.adapter.ItemVH.bind(ItemVH.kt:50) at com.github.file_picker.adapter.ItemAdapter.onBindViewHolder(ItemAdapter.kt:30) at com.github.file_picker.adapter.ItemAdapter.onBindViewHolder(ItemAdapter.kt:12) at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7254) at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7337) at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6194) at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6460) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296) at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2330) at androidx.recyclerview.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:572) at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591) at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:668) at androidx.recyclerview.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309) at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3686) at android.view.View.measure(View.java:25161) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7109) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:25161) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7109) at androidx.appcompat.widget.LinearLayoutCompat.measureChildBeforeLayout(LinearLayoutCompat.java:1401) at androidx.appcompat.widget.LinearLayoutCompat.measureVertical(LinearLayoutCompat.java:685) at androidx.appcompat.widget.LinearLayoutCompat.onMeasure(LinearLayoutCompat.java:575) at android.view.View.measure(View.java:25161) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7109) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:25161) at com.google.android.material.bottomsheet.BottomSheetBehavior.onMeasureChild(BottomSheetBehavior.java:453) at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:831) at android.view.View.measure(View.java:25161) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7109) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:25161) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7109) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:145) at android.view.View.measure(View.java:25161) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7109) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:25161) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7109) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:25161) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7109) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1580) at android.widget.LinearLayout.measureVertical(LinearLayout.java:849) at android.widget.LinearLayout.onMeasure(LinearLayout.java:728) at android.view.View.measure(View.java:25161) E/AndroidRuntime: at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7109) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:1105) at android.view.View.measure(View.java:25161) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3669) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2294) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2691) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2166) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8887) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1280) at android.view.Choreographer.doCallbacks(Choreographer.java:1019) at android.view.Choreographer.doFrame(Choreographer.java:911) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1248) at android.os.Handler.handleCallback(Handler.java:900) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8668) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)

    bug 
    opened by sherwin14 4
  • Fatal Exception: java.lang.NullPointerException

    Fatal Exception: java.lang.NullPointerException

    Fatal Exception: java.lang.NullPointerException: at com.github.file_picker.FilePicker.getBinding(FilePicker.kt:50) at com.github.file_picker.FilePicker.access$getBinding(FilePicker.kt:45) at com.github.file_picker.FilePicker$loadFiles$1$1.invoke(FilePicker.kt:433) at com.github.file_picker.FilePicker$loadFiles$1$1.invoke(FilePicker.kt:432) at androidx.paging.MutableCombinedLoadStateCollection.updateHelperStatesAndDispatch(MutableCombinedLoadStateCollection.kt:131) at androidx.paging.MutableCombinedLoadStateCollection.set(MutableCombinedLoadStateCollection.kt:58) at androidx.paging.PagingDataDiffer.dispatchLoadStates$paging_common(PagingDataDiffer.kt:112) at androidx.paging.PagingDataDiffer$collectFrom$2$1$1.invokeSuspend(PagingDataDiffer.kt:169) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6704) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:916)

    opened by marcosjfr 0
Releases(0.2.1)
Owner
Majid Arabi
Android Developer
Majid Arabi
Unicorn File Picker is a library designed to package a powerful file selector for android.

A simple, documented, and contribution-friendly File Picker for Android.

Abhishek Tiwari 62 Dec 5, 2022
Image Picker for Android 🤖

Android Image Picker No config yet highly configurable image picker for Android Screenshot Click to see how image picker looks… Download Add this to y

Esa Firman 1k Jan 7, 2023
Easy to use and configurable library to Pick an image from the Gallery or Capture image using Camera.

Easy to use and configurable library to Pick an image from the Gallery or Capture image using Camera.

Simform Solutions 201 Jan 5, 2023
With the Help of this libray you can pic image from camera, gallery, it's support image cropping as well and you can pic PDF

FilePicker This project aims to provide an ultimate and flexible image picking from Gallery, Camera and cropping experience as well as PDF picking fro

Raj Pratap Singh Jadon 3 Nov 24, 2022
Built the ccp code on compose. Country Code Picker is an android library which provides an easy way to search and select country or international phone code.

Built the ccp code on compose. Country Code Picker is an android library which provides an easy way to search and select country or international phone code.

utku glsvn 7 Oct 23, 2022
Block picker is Android app to help Minecraft player choose blocks for their build.

Block Picker Ever trying to make a build in Minecraft and you just can't find the perfect color palette? Block Picker will help jumpstart your creativ

Ramim Alam 2 May 8, 2022
A super file picker framework.

一款超强的文件选择框架。A super file picker framework. 功能: 文件选择 支持多种类型文件选择 支持多个文件同时选择 如何添加 Gradle添加: 1.在Project的build.gradle中添加仓库地址

null 7 Jul 16, 2022
Wheel Picker With Kotlin

WheelPicker Including in your project Gradle Add below codes to your project build.gradle file. buildscript { repositories { mavenCentral(

Clapp Studio 8 Jan 16, 2022
FilePicker - Android library to facilitate files picking up process and ability to convert them to request bodies

FilePicker - Android library to facilitate files picking up process and ability to convert them to request bodies

Ahmed Atwa 26 Dec 14, 2022
An Android library for picking location in Bangladesh

BDLocationChooser An Android library for picking location in Bangladesh Example Screenshot : Implement Library The library is available on JitPack, fo

Sharif Rafid Ur Rahman 9 Jun 26, 2022