Giter Club home page Giter Club logo

filepicker's Introduction

FilePicker Library for Android

License API jitPack Monthly Downloads Weekly Downloads Android Arsenal

A FilePicker library for Android for selecting multiple types of files and also to capture Images and Videos.

Sample Apk

Note

pic

Usage

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.jaiselrahman:FilePicker:1.3.2'
    }

Step 3: Start FilePickerActivity using startActivityForResult(...).

    Intent intent = new Intent(this, FilePickerActivity.class);
    startActivityForResult(intent, FILE_REQUEST_CODE);

Step 4: Receive results in onActivityResult(...).

    case FILE_REQUEST_CODE:
        ArrayList<MediaFile> files = data.getParcelableArrayListExtra(FilePickerActivity.MEDIA_FILES);
        //Do something with files
        break;

Configuration

The FilePickerActivity can be configured by using Configurations.Builder methods

Example

    intent.putExtra(FilePickerActivity.CONFIGS, new Configurations.Builder()
                .setCheckPermission(true)
                .setShowImages(true)
                .enableImageCapture(true)
                .setMaxSelection(10)
                .setSkipZeroSizeFiles(true)
                .build());

Builder Methods

Methods Default value Uses
setShowImages(boolean) true Whether to load Images files
setShowVideos(boolean) true Whether to load Videos files
setShowAudios(boolean) false Whether to load Audio files
setShowFiles(boolean) false Whether to load Files for given suffixes
enableImageCapture(boolean) false Enables camera for capturing of images
enableVideoCapture(boolean) false Enables camera for capturing of videos
setCheckPermission(boolean) false Whether to request permissions on runtime for API >= 23 if not granted
setSuffixes(String...) "txt", "pdf", "html", "rtf", "csv", "xml",
"zip", "tar", "gz", "rar", "7z","torrent",
"doc", "docx", "odt", "ott",
"ppt", "pptx", "pps",
"xls", "xlsx", "ods", "ots"
Suffixes for file to be loaded, overrides default value
setMaxSelection(int) -1 Maximum no of items to be selected, -1 for no limits
setSingleChoiceMode(boolean) false Can select only one file, overrides setMaxSelection(int)
use setSelectedMediaFile(MediaFile) to set default selection
setSelectedMediaFile(MediaFile) null Default file selection in singleChoiceMode
setSelectedMediaFiles(ArrayList<MediaFile>) null Default files to be marked as selected
setSingleClickSelection(boolean) true Start selection mode on single click else on long click
setSkipZeroSizeFiles(boolean) true Whether to load zero byte sized files
setLandscapeSpanCount(int) 5 Grid items in landscape mode
setPortraitSpanCount(int) 3 Grid items in portrait mode
setImageSize(int) Screen width/portraitSpanCount Size of height, width of image to be loaded in Px
setRootPath(String) External storage Set custom directory path to load files from
setIgnorePaths(String... ignorePaths) null Regex patterns of paths to ignore
setIgnoreNoMedia(boolean) true Whether to ignore .nomedia file
setIgnoreHiddenFile(boolean) true Whether to ignore hidden file

MediaFile methods

Method Description
long getId() Id of the file in MediaStore database
String getName() Name of file without suffix
String getPath() Absolute path of the file
long getSize() Size of the file
long getDate() Date when file is added to MediaStore database
String getMimeType() Mime type of the file
int getMediaType() One of TYPE_FILE, TYPE_IMAGE, TYPE_AUDIO, TYPE_VIDEO
long getDuration() Duration of Audio, Video files in ms, else 0
Uri getThumbnail() Album Art of Audio files
long getHeight() Height of Image, Video files in Px for API>=16, else 0
long getWidth() Width of Image, Video files in Px for API>=16, else 0
String getBucketId() Id of Parent Directory in MediaStore database
String getBucketName() Name of Parent Directory

Contributions

Feel free to contribute to this project. Before creating issues or pull request please take a look at following templates.

Credits

License

Copyright (c) 2018, Jaisel Rahman

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

filepicker's People

Contributors

jaiselrahman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

filepicker's Issues

Permission not given

Describe the bug
Trying to pick a file and a toast says "permission not given"
To Reproduce
I have installed version 1.1.1
Intent c_intent = new Intent(this, FilePickerActivity.class); startActivityForResult(c_intent, 4);

Expected behavior
Expected the file chooser to pop up

Android info (please complete the following information):
Android 8

This library Not working on android 10

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: sa.waqood.labonclickjava, PID: 12002
    java.lang.RuntimeException: Unable to start activity ComponentInfo{sa.waqood.labonclickjava/com.jaiselrahman.filepicker.activity.FilePickerActivity}: android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM files WHERE ((is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' , '1009-281e' ))) AND ((bucket_id IS NOT NULL) GROUP BY (bucket_id)) ORDER BY _data ASC
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM files WHERE ((is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' , '1009-281e' ))) AND ((bucket_id IS NOT NULL) GROUP BY (bucket_id)) ORDER BY _data ASC
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:184)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
        at android.content.ContentProviderProxy.query(ContentProviderNative.java:423)
        at android.content.ContentResolver.query(ContentResolver.java:944)
        at android.content.ContentResolver.query(ContentResolver.java:880)
        at android.content.ContentResolver.query(ContentResolver.java:836)
        at com.jaiselrahman.filepicker.loader.FileLoader.getFoldersToIgnore(FileLoader.java:145)
        at com.jaiselrahman.filepicker.loader.FileLoader.<init>(FileLoader.java:119)
        at com.jaiselrahman.filepicker.loader.FileLoaderCallback.onCreateLoader(FileLoaderCallback.java:63)
        at android.app.LoaderManagerImpl.createLoader(LoaderManager.java:564)
        at android.app.LoaderManagerImpl.createAndInstallLoader(LoaderManager.java:573)
        at android.app.LoaderManagerImpl.initLoader(LoaderManager.java:627)
        at com.jaiselrahman.filepicker.loader.FileLoader.loadFiles(FileLoader.java:179)
        at com.jaiselrahman.filepicker.activity.FilePickerActivity.loadFiles(FilePickerActivity.java:128)
        at com.jaiselrahman.filepicker.activity.FilePickerActivity.onCreate(FilePickerActivity.java:115)
        at android.app.Activity.performCreate(Activity.java:7802)
        at android.app.Activity.performCreate(Activity.java:7791)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
E/UncaughtException: java.lang.RuntimeException: Unable to start activity ComponentInfo{sa.waqood.labonclickjava/com.jaiselrahman.filepicker.activity.FilePickerActivity}: android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM files WHERE ((is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' , '1009-281e' ))) AND ((bucket_id IS NOT NULL) GROUP BY (bucket_id)) ORDER BY _data ASC
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM files WHERE ((is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' , '1009-281e' ))) AND ((bucket_id IS NOT NULL) GROUP BY (bucket_id)) ORDER BY _data ASC
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:184)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
        at android.content.ContentProviderProxy.query(ContentProviderNative.java:423)
        at android.content.ContentResolver.query(ContentResolver.java:944)
        at android.content.ContentResolver.query(ContentResolver.java:880)
        at android.content.ContentResolver.query(ContentResolver.java:836)
        at com.jaiselrahman.filepicker.loader.FileLoader.getFoldersToIgnore(FileLoader.java:145)
        at com.jaiselrahman.filepicker.loader.FileLoader.<init>(FileLoader.java:119)
        at com.jaiselrahman.filepicker.loader.FileLoaderCallback.onCreateLoader(FileLoaderCallback.java:63)
        at android.app.LoaderManagerImpl.createLoader(LoaderManager.java:564)
        at android.app.LoaderManagerImpl.createAndInstallLoader(LoaderManager.java:573)
        at android.app.LoaderManagerImpl.initLoader(LoaderManager.java:627)
        at com.jaiselrahman.filepicker.loader.FileLoader.loadFiles(FileLoader.java:179)
        at com.jaiselrahman.filepicker.activity.FilePickerActivity.loadFiles(FilePickerActivity.java:128)
        at com.jaiselrahman.filepicker.activity.FilePickerActivity.onCreate(FilePickerActivity.java:115)
        at android.app.Activity.performCreate(Activity.java:7802)
        at android.app.Activity.performCreate(Activity.java:7791)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 

Add screenshot and links in the README

I'm not sure how good this library is compared to the base version.
Integrating it to later realize it's not what I want is frustrating. Can you add some screenshots showing its features to the readme so I can find out if it fits my need ?

Thanks a lot.

When i import the project,then running the app,i got this error

Caused by: android.view.InflateException: Binary XML file line #13 in com.gd.sportapp:layout/activity_splash: Error inflating class com.google.android.material.button.MaterialButton
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:854)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1006)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:481)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
        at com.gd.sportapp.ui.splash.SplashScreen.onCreate(SplashScreen.java:39)
        at android.app.Activity.performCreate(Activity.java:7802)
        at android.app.Activity.performCreate(Activity.java:7791)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant).

my code work fine when i delete the implementation...how to solve it,thanks

FilePickerActivity shows empty when RootPath is set.

Describe the bug
When I set a rootPath in the configurations builder, FilePickerActivity doesn't show any files.

To Reproduce
Steps to reproduce the behavior:

  1. Set a path with setRootPath method in the configurations builder.

Here's my configurations builder:

Configurations configurations = new Configurations.Builder()
                    .setRootPath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).getPath())
                    .setCheckPermission(true)
                    .setShowImages(false)
                    .setShowVideos(true)
                    .setSkipZeroSizeFiles(true)
                    .setMaxSelection(10)
                    .build();

Expected behavior
Show the desired files on the specific path.

Android info (please complete the following information):

  • Device - LG Q6
  • API 27

Build fails when Glide is included in the app

When I add this library to a project that also utilizes com.github.bumptech.glide:glide:3.7.0 then the following error comes up:

cannot find symbol method diskCacheStrategy(DiskCacheStrategy).

The line of code that it fails on is:

Glide.with(ProductDetailsActivity.this).load(serverImagePath).diskCacheStrategy(DiskCacheStrategy.ALL).fitCenter().override(300, 300).into(productImage);

No other code has been added to the application yet, only the inclusion of the library in the Gradle build file.

The minSdkVersion is 16, but I also tried 19 and it still fails.

Glide error

I am getting this error
Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored

any suggestions? It seems like glide should be GlideApp.with rather than you Glide.with...according to the doc..I think. Still fairly new to all of this.

java.lang.RuntimeException: Manifest merger failed with multiple errors

Hi I implement your plugin but when I try to run I get this error

java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs
	at com.android.builder.core.AndroidBuilder.mergeManifestsForApplication(AndroidBuilder.java:556)
	at com.android.build.gradle.tasks.ProcessApplicationManifest.doFullTaskAction(ProcessApplicationManifest.java:198)
	at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:106)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
	at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
	at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
	at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:74)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:143)
	at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:40)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
	at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:24)
	at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:46)
	at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:49)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:33)
	at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:355)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:219)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
	at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:124)
	at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:77)
	at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:74)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:154)
	at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:38)
	at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96)
	at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:74)
	at org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.run(ClientProvidedBuildActionRunner.java:68)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:50)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:44)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:79)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:44)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
	at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)
	at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
	at java.lang.Thread.run(Thread.java:745)


Plese help me to fix this issue

Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media requires android.permission.WRITE_EXTERNAL_STORAGE

Describe the bug
It may not proper ask WRITE_EXTERNAL_STORAGE when intent to camera capture.

2019-04-24 08:46:14.401 16657-17457/? E/DatabaseUtils: Writing exception to parcel
    java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=27230, uid=10163 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
        at android.content.ContentProvider.enforceWritePermissionInner(ContentProvider.java:707)
        at android.content.ContentProvider$Transport.enforceWritePermission(ContentProvider.java:517)
        at android.content.ContentProvider$Transport.insert(ContentProvider.java:261)
        at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:152)
        at android.os.Binder.execTransact(Binder.java:697)
2019-04-24 08:46:14.407 27230-27230/com.jaiselrahman.filepickersample E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.jaiselrahman.filepickersample, PID: 27230
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=2, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.jaiselrahman.filepickersample/com.jaiselrahman.filepicker.activity.FilePickerActivity}: java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=27230, uid=10163 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4268)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4312)
        at android.app.ActivityThread.-wrap19(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1644)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=27230, uid=10163 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
        at android.os.Parcel.readException(Parcel.java:2013)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
        at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
        at android.content.ContentResolver.insert(ContentResolver.java:1539)
        at com.jaiselrahman.filepicker.adapter.FileGalleryAdapter.openCamera(FileGalleryAdapter.java:209)
        at com.jaiselrahman.filepicker.activity.FilePickerActivity.onRequestPermissionsResult(FilePickerActivity.java:152)
        at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7429)
        at android.app.Activity.dispatchActivityResult(Activity.java:7280)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4264)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4312) 
        at android.app.ActivityThread.-wrap19(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1644) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6494) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

To Reproduce
Steps to reproduce the behavior:

  1. Install the sample code
  2. Click "Launch image picker"
  3. Grant storage permission when ask
  4. Click Camera button
  5. Grant camera permission when ask
  6. Exception thrown

Expected behavior
Can complete photoing and choose it smoothly.

Screenshots
Video attached.
https://drive.google.com/open?id=1KJ-_kQ91XPvVk688KhZyDApMTH6m8ere

Android info (please complete the following information):

  • Device/Emulator Nexus 5X (Android 8.1.0)
  • API level 27

Can't call FilePickerActivity

FilePickerActivity shows blank white page activity
Steps to reproduce the behavior:

  1. Image Button press
  2. Successfully go to another activity, But it shows blank white activity instead of filepicker

NullPointerException when discarding captured photo

I don't know if this is related to #4 so I just created a different issue:

After updating to version 1.04 and solving #1 issue, when I take a photo and press the cross icon I get:

java.lang.RuntimeException: Unable to resume activity {my.package/com.jaiselrahman.filepicker.activity.FilePickerActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=Intent { }} to activity {my.package/com.jaiselrahman.filepicker.activity.FilePickerActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.io.File.delete()' on a null object reference

To Reproduce
Steps to reproduce the behavior:

  1. Open the picker activity
  2. Select the capture photo icon
  3. Capture a photo
  4. Click the cross icon
  5. The exception is thrown

Android info:

  • Device: Samsung Galaxy S4
  • API level 25

E/AndroidRuntime: FATAL EXCEPTION: main PID: 20962 java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 1995548 bytes

E/AndroidRuntime: FATAL EXCEPTION: main PID: 20962 java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 1995548 bytes at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3776) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6123) at java.lang.reflect.Method.invoke(Native Method) at

Fatal Exception: java.lang.ArrayIndexOutOfBoundsException

Get this occasionally

com.jaiselrahman.filepicker.activity.FilePickerActivity.onRequestPermissionsResult (FilePickerActivity.java:151)
android.app.Activity.requestPermissions (Activity.java:4392)
com.jaiselrahman.filepicker.activity.FilePickerActivity.requestPermission (FilePickerActivity.java:244)
com.jaiselrahman.filepicker.activity.FilePickerActivity.onCameraClick (FilePickerActivity.java:234)
com.jaiselrahman.filepicker.adapter.FileGalleryAdapter$1.onClick (FileGalleryAdapter.java:174)
android.view.View.performClick (View.java:6310)
android.view.View$PerformClick.run (View.java:24951)
android.os.Handler.handleCallback (Handler.java:790)
android.os.Handler.dispatchMessage (Handler.java:99)
android.os.Looper.loop (Looper.java:164)
android.app.ActivityThread.main (ActivityThread.java:6548)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:438)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:857)

Crash when permission manually close then return to the picker

Describe the bug

2019-04-24 09:41:59.197 28893-28911/? E/DatabaseUtils: Writing exception to parcel
    java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/file from pid=31942, uid=10164 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
        at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:633)
        at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:503)
        at android.content.ContentProvider$Transport.query(ContentProvider.java:214)
        at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:102)
        at android.os.Binder.execTransact(Binder.java:697)
2019-04-24 09:41:59.208 31942-31942/com.jaiselrahman.filepickersample E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.jaiselrahman.filepickersample, PID: 31942
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jaiselrahman.filepickersample/com.jaiselrahman.filepicker.activity.FilePickerActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/file from pid=31942, uid=10164 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/file from pid=31942, uid=10164 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
        at android.os.Parcel.readException(Parcel.java:2013)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
        at android.content.ContentProviderProxy.query(ContentProviderNative.java:418)
        at android.content.ContentResolver.query(ContentResolver.java:754)
        at android.content.ContentResolver.query(ContentResolver.java:704)
        at android.content.ContentResolver.query(ContentResolver.java:662)
        at com.jaiselrahman.filepicker.loader.FileLoader.getFoldersToIgnore(FileLoader.java:145)
        at com.jaiselrahman.filepicker.loader.FileLoader.<init>(FileLoader.java:119)
        at com.jaiselrahman.filepicker.loader.FileLoaderCallback.onCreateLoader(FileLoaderCallback.java:63)
        at android.app.LoaderManagerImpl.createLoader(LoaderManager.java:556)
        at android.app.LoaderManagerImpl.createAndInstallLoader(LoaderManager.java:565)
        at android.app.LoaderManagerImpl.initLoader(LoaderManager.java:619)
        at com.jaiselrahman.filepicker.loader.FileLoader.loadFiles(FileLoader.java:179)
        at com.jaiselrahman.filepicker.activity.FilePickerActivity.loadFiles(FilePickerActivity.java:128)
        at com.jaiselrahman.filepicker.activity.FilePickerActivity.onCreate(FilePickerActivity.java:118)
        at android.app.Activity.performCreate(Activity.java:7009)
        at android.app.Activity.performCreate(Activity.java:7000)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)

To Reproduce
Steps to reproduce the behavior:

  1. Install the sample code
  2. Click "Launch image picker"
  3. Grant storage permission when ask
  4. Go to setting, find it's app, turn off storage permission
  5. Back to app
  6. Exception thrown

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
Video attached.
https://drive.google.com/open?id=1DNYd5I-3KR18_cccWXk6d0tZXJ9a27ea

Android info (please complete the following information):

  • Device/Emulator Nexus 5X (Android 8.1.0)
  • API level 27

getpath issue

what is the replacement of getPath() to create file because it not working on android 10.

Possible to set Theme?

is it possible to set theme on FilePickerActivity ?
OK button is white and it is hidden in my white theme!

Not working with Glide 4.9.0

After updating from Glide 4.8.0 to 4.9.0. Started getting this.

java.lang.NoSuchMethodError: No virtual method optionalCenterCrop()Lcom/bumptech/glide/request/RequestOptions; in class Lcom/bumptech/glide/request/RequestOptions; or its super classes (declaration of 'com.bumptech.glide.request.RequestOptions' appears in /data/app/com.doseapp.staging-9Upoh0yS4VmWaJolFDqOQw==/base.apk)
at com.jaiselrahman.filepicker.adapter.FileGalleryAdapter.(FileGalleryAdapter.java:75)
at com.jaiselrahman.filepicker.activity.FilePickerActivity.onCreate(FilePickerActivity.java:100)
at android.app.Activity.performCreate(Activity.java:7149)
at android.app.Activity.performCreate(Activity.java:7140)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1288)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3017)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3172)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1906)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6863)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Thumbnail pictures show up in 'Image picker'

Is there a possibility that the folders with the thumbnails (.thumbnails) are not shown during image selection? Actually, these files are hidden, but strangely they are still displayed and of course completely unusable.

The code used was exactly the same as in the sample.

Many thanks for the help

Loading File time

if device has more than 1000 image it takes more time to load please add load more

MediaFile with empty name after upgrade to 1.3.0 version

Describe the bug
After upgrading to 1.3.0 version, mediaFiles returned from FilePicker Activity have null as name attribut.
Also, files shown in the file picker without name. (see the screenshots)

To Reproduce
Steps to reproduce the behavior:

  1. upgrade to 1.3.0
  2. choose file
  3. mediaFile.name -> is null

Screenshots
Version 1.2.2:
Screenshot_1574763107

Version 1.3.0:
Screenshot_1574762681

Android info (please complete the following information):

  • Emulator & One plus 6
  • API 29 / API 28

Crash due to themes and AppBarLayout

I receive the following error that appears to have to do with themes:

01-01 08:09:59.199 18158-18158/com.flavorburst.touchpanel E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.flavorburst.touchpanel, PID: 18158
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.flavorburst.touchpanel/com.jaiselrahman.filepicker.activity.FilePickerActivity}: android.view.InflateException: Binary XML file line #24: Binary XML file line #24: Error inflating class android.support.design.widget.AppBarLayout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:772)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:662)
Caused by: android.view.InflateException: Binary XML file line #24: Binary XML file line #24: Error inflating class android.support.design.widget.AppBarLayout
at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at com.jaiselrahman.filepicker.activity.FilePickerActivity.onCreate(FilePickerActivity.java:67)
at android.app.Activity.performCreate(Activity.java:6266)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:772) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:662) 
Caused by: android.view.InflateException: Binary XML file line #24: Error inflating class android.support.design.widget.AppBarLayout
at android.view.LayoutInflater.createView(LayoutInflater.java:645)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
at com.jaiselrahman.filepicker.activity.FilePickerActivity.onCreate(FilePickerActivity.java:67) 
at android.app.Activity.performCreate(Activity.java:6266) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:772) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:662) 
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at android.view.LayoutInflater.createView(LayoutInflater.java:619)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
at com.jaiselrahman.filepicker.activity.FilePickerActivity.onCreate(FilePickerActivity.java:67) 
at android.app.Activity.performCreate(Activity.java:6266) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:772) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:662) 
Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library.

single choice mode doesn't work with image capture

if set image capture true, single choice doesn't worked.
FilePickerActivity.CONFIGS, Configurations.Builder()
.setCheckPermission(true)
.setShowImages(true)
.enableImageCapture(true)
.setSingleChoiceMode(true)
.setShowFiles(true)
.setSuffixes("pdf")
.build()

No way to get file path.

As in the latest build 1.3.2 , getPath is deprecated, and we now have to use getUri but, in order to get the file path from uri , none of the methods available on internet works. So whats the way to get the file path.

For image selection i get red circle on selected image ,not default check box how can i can that?

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:
1.
2.
3.
4.

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Android info (please complete the following information):

  • Device/Emulator
  • API level

Additional context
Add any other context about the problem here.

New version doesn't show any files

Describe the bug
After updating to new version 1.2.0, I can't see any files in the list.

To Reproduce
Steps to reproduce the behavior:
Intent that I am using which was working earlier

val intent = Intent(context, FilePickerActivity::class.java).apply {
            putExtra(FilePickerActivity.CONFIGS, Configurations.Builder()
                    .setCheckPermission(true)
                    .setShowAudios(false)
                    .setShowImages(false)
                    .setShowVideos(false)
                    .setShowFiles(true)
                    .setSingleChoiceMode(true)
                    .setSingleClickSelection(true)
                    .setSkipZeroSizeFiles(true)
                    .setSuffixes("mp3", "m4a")
                    .build())
        }

Expected behavior
I should be able to "mp3", "m4a" files.

Android info (please complete the following information):

  • Device - OnePlus 6
  • API level - Pie

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.tcs.it, PID: 6818 java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size

When try to open camera i will get this error!

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.tcs.it, PID: 6818
java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 2716384 bytes
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3776)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
Caused by: android.os.TransactionTooLargeException: data parcel size 2716384 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:615)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3700)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3768)
at android.os.Handler.handleCallback(Handler.java:751) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6123) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 
Application terminated.

auto submit when file is clicked in SingleChoiceMode

Is your feature request related to a problem? Please describe.
Currently, the user needs to click "Done" after selecting a file when singleChoiceMode = true

Describe the solution you'd like
create a flag setAutoSubmitWhenSingleChoice, which will auto submit when a file is clicked.

Describe alternatives you've considered
when the flag is set, then the 0/1 label at the toolbar is redundant. ideally, provide an option to customize the text. e.g. "Open PDF file"

Manifest merger failed

Describe the bug
I received this bug when import the module from gradle.

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
	is also present at [androidx.core:core:1.1.0-alpha04] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
	Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:14:5-45:19 to override.

It seems this module use AndroidX in developing.
Does there is a way to use this module without AndroidX ?

I have read the similar issue #22.
But the solution is not suitable to me.

To Reproduce
Steps to reproduce the behavior:

  1. Add jaiselrahman:FilePicker to project
dependencies {
    implementation 'com.github.jaiselrahman:FilePicker:1.2.2'
}
  1. Try build code to phone

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
Here is the merged Manifest.

Screen Shot 2019-04-23 at 3 14 52 PM

Here is my project's build.gradle file

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.3.30'
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Here is my app's build.gradle file

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

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

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "......................."
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

buildscript {
    ext.supportLibraryVersion = '28.0.0'
    ext.butterknifeVersion = '8.8.1'
    ext.glideVersion = '4.7.1'
    ext.jdeferredVersion = '2.0.0-beta1'
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation "com.android.support:appcompat-v7:$supportLibraryVersion"
    implementation "com.android.support:support-v4:$supportLibraryVersion"
    implementation "com.android.support:design:$supportLibraryVersion"
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'

    implementation "com.jakewharton:butterknife:$butterknifeVersion"
    kapt "com.jakewharton:butterknife-compiler:$butterknifeVersion"

    implementation 'io.reactivex.rxjava2:rxkotlin:2.2.0'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'

    implementation 'org.immutables:gson:2.7.1'
    implementation 'com.squareup.okhttp3:okhttp:3.12.0'
    implementation 'com.github.bumptech.glide:okhttp3-integration:4.9.0'
    implementation "com.github.bumptech.glide:glide:$glideVersion"
    kapt "com.github.bumptech.glide:compiler:$glideVersion"

    implementation 'com.github.jaiselrahman:FilePicker:1.2.2'

    implementation "org.jdeferred.v2:jdeferred-core:$jdeferredVersion"
    implementation "org.jdeferred.v2:jdeferred-android:$jdeferredVersion"
    
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Android info (please complete the following information):

  • Device/Emulator Nexus 5X (Android 8.1.0)
  • API level 27

Audio file name not change when rename or delete it

Describe the bug
For example

  1. I have a one audio file name is audio.mp3 and when i rename it to talok.mp3 using another application such as File Explorer application and then use the picker you can see audio name is still audio.mp3

  2. This problem is found out when delete audio file too (File that delete still show in picker and when selected it will get error file not found exception)

  • Device Nokia 6
  • Pie | 9 | API level 28

NullPointerException when saving captured photo

After updating to version 1.04 and solving #1 issue, when I take a photo and press the check icon I get:

java.lang.RuntimeException: Unable to resume activity {my.package/com.jaiselrahman.filepicker.activity.FilePickerActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { }} to activity {my.package/com.jaiselrahman.filepicker.activity.FilePickerActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference

To Reproduce
Steps to reproduce the behavior:

  1. Open the picker activity
  2. Select the capture photo icon
  3. Capture a photo
  4. Click the check icon
  5. The exception is thrown

Android info:

  • Device: Samsung Galaxy S4
  • API level 25

Permissions adjusted according to needs

[FilePickerActivity.class] default request too many permissions:
public final String[] permissions = new String[]{"android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.CAMERA"};

Can permissions adjusted according to needs,
if enableImageCapture() / enableVideoCapture() all false, FilePickerActivity not really need "android.permission.CAMERA".

Support for API 29 (Android 10)

I'm getting an SQLiteException when starting FilePickerActivity on a device with API 29. On API 28 it works fine.
There is a similar issue for another library.
Device: Android Studio emulator with android 10.0
Lib ver.: 1.2.2
App uses the latest AndroidX libs. compileSdkVersion is 29

I'm starting activity like this:

Intent intent = new Intent(getActivity(), FilePickerActivity.class);
                                intent.putExtra(FilePickerActivity.CONFIGS, new Configurations.Builder()
                                        .setCheckPermission(true)
                                        .setMaxSelection(1)
                                        .setShowAudios(false)
                                        .setShowImages(false)
                                        .setShowVideos(false)
                                        .setShowFiles(true)
                                        .setSuffixes("doc", "docx", "xls", "xlsx")
                                        .build());
                                startActivityForResult(intent, REQUEST_CODE_CHOOSE_FILE);

Logcat:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.example/com.jaiselrahman.filepicker.activity.FilePickerActivity}: android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM files WHERE ((owner_package_name IN ( 'com.android.example' ) OR media_type=2 OR media_type=4 OR media_type=0 AND mime_type LIKE 'audio/%' OR media_type=3 OR media_type=0 AND mime_type LIKE 'video/%' OR media_type=1 OR media_type=0 AND mime_type LIKE 'image/%') AND (is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' , '1005-1207' ))) AND ((bucket_id IS NOT NULL) GROUP BY (bucket_id)) ORDER BY _data ASC
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM files WHERE ((owner_package_name IN ( 'com.android.example' ) OR media_type=2 OR media_type=4 OR media_type=0 AND mime_type LIKE 'anaudio/%' OR media_type=3 OR media_type=0 AND mime_type LIKE 'video/%' OR media_type=1 OR media_type=0 AND mime_type LIKE 'image/%') AND (is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' , '1005-1207' ))) AND ((bucket_id IS NOT NULL) GROUP BY (bucket_id)) ORDER BY _data ASC
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:184)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
        at android.content.ContentProviderProxy.query(ContentProviderNative.java:423)
        at android.content.ContentResolver.query(ContentResolver.java:944)
        at android.content.ContentResolver.query(ContentResolver.java:880)
        at android.content.ContentResolver.query(ContentResolver.java:836)
        at com.jaiselrahman.filepicker.loader.FileLoader.getFoldersToIgnore(FileLoader.java:145)
        at com.jaiselrahman.filepicker.loader.FileLoader.<init>(FileLoader.java:119)
        at com.jaiselrahman.filepicker.loader.FileLoaderCallback.onCreateLoader(FileLoaderCallback.java:63)
        at android.app.LoaderManagerImpl.createLoader(LoaderManager.java:564)
        at android.app.LoaderManagerImpl.createAndInstallLoader(LoaderManager.java:573)
        at android.app.LoaderManagerImpl.initLoader(LoaderManager.java:627)
        at com.jaiselrahman.filepicker.loader.FileLoader.loadFiles(FileLoader.java:179)
        at com.jaiselrahman.filepicker.activity.FilePickerActivity.loadFiles(FilePickerActivity.java:128)
        at com.jaiselrahman.filepicker.activity.FilePickerActivity.onCreate(FilePickerActivity.java:115)
        at android.app.Activity.performCreate(Activity.java:7802)
        at android.app.Activity.performCreate(Activity.java:7791)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Open .csv file

I have setSuffixes("csv") but can't abe to get file it show blank can You help me out

Intent intent = new Intent(getActivity(), FilePickerActivity.class); intent.putExtra(FilePickerActivity.CONFIGS, new Configurations.Builder() .setCheckPermission(true) .setSuffixes("csv") .setSelectedMediaFiles(mediaFiles) .setSkipZeroSizeFiles(true) .setMaxSelection(1) .build()); startActivityForResult(intent,FILE_REQUEST_CODE);

No Files are shown if i set only the showFiles method to true

  • I tried to open files(pdf,doc,docx), so i set the image,video and audio to false but no files are shown but if you enalbe video or image the files are included.

To Reproduce
Steps to reproduce the behavior:

  1. set image,video and audio to false and files is set to true
  2. set the suffixes to pdf,doc and docx
  3. start the filepicker activity
  4. no files are shown even if it exists.

Expected behavior
Files must be shown.

Android info (please complete the following information):

  • Xiaomi Mi 8
  • API 29

Additional context
Your library is great hope to fix this bug soon. thanks

How to select directory instead of the selecting file ?

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.