A FileBrowser / FileChooser for Android that you can integrate to your app to browse/select files from internal/external storage.
<dependency> <groupId>com.adityak</groupId> <artifactId>browsemyfiles</artifactId> <version>1.4</version> <type>pom</type> </dependency>
compile 'com.adityak:browsemyfiles:1.4'
It easily integrates with your app's color scheme. You can change the color scheme using the following in your styles.xml
<item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:actionModeBackground">@color/actionModeToolbar</item>
There are 3 main classes to use the library.
- FileBrowser - Used to just Browse files in storage (has all file IO features)
- FileChooser - Used to select single/multiple files in storage (has some IO features)
- FileBrowserWithCustomHandler - Used to run custom code when files are selected (has all IO features)
Use following Intent to start the FileBrowser
Intent i4 = new Intent(getApplicationContext(), FileBrowser.class); startActivity(i4);
Use following Intent to start the FileChooser
- For Single Selection
Intent i2 = new Intent(getApplicationContext(), FileChooser.class); i2.putExtra(Constants.SELECTION_MODE,Constants.SELECTION_MODES.SINGLE_SELECTION.ordinal()); startActivityForResult(i2,PICK_FILE_REQUEST);
To get the selected file, In your calling activity's onActivityResult method, use the following
if (requestCode == PICK_FILE_REQUEST && data!=null) { if (resultCode == RESULT_OK) { Uri file = data.getData(); } }
- For Multiple Selection
Intent i2 = new Intent(getApplicationContext(), FileChooser.class); i2.putExtra(Constants.SELECTION_MODE,Constants.SELECTION_MODES.MULTIPLE_SELECTION.ordinal()); startActivityForResult(i2,PICK_FILE_REQUEST);
To get the selected file, In your calling activity's onActivityResult method, use the following
if (requestCode == PICK_FILE_REQUEST && data!=null) { if (resultCode == RESULT_OK) { ArrayList<Uri> selectedFiles = data.getParcelableArrayListExtra(Constants.SELECTED_ITEMS); } }
Register a Broadcast receiver and handle the onReceive method like below
public class FileSelectedBroadCastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Uri filePath = intent.getParcelableExtra(com.aditya.filebrowser.Constants.BROADCAST_SELECTED_FILE); } }
Register the receiver like the following snippet
<receiver android:name=".FileSelectedBroadCastReceiver" android:exported="false" android:enabled="true"> <intent-filter> <action android:name="com.adityak.filebrowser.FILE_SELECTED_BROADCAST" /> </intent-filter> </receiver>
If you also need some other parameters to be sent with the broadcast use the following when creating the activity
Intent i = new Intent(mContext, FileBrowserWithCustomHandler.class); Bundle ib = new Bundle(); //add extras i.putExtras(ib); startActivity(i);
and in the broadcast receiver use the following to get the extras
Bundle b = intent.getExtras()
Add the following in the intent
Intent i = new Intent(this, FileBrowser.class); //works for all 3 main classes (i.e FileBrowser, FileChooser, FileBrowserWithCustomHandler) i.putExtra(Constants.INITIAL_DIRECTORY, new File(Environment.getExternalStorageDirectory().getAbsolutePath(),"Movies").getAbsolutePath());
Add the following in the intent
Intent i = new Intent(this, FileBrowser.class); //works for all 3 main classes (i.e FileBrowser, FileChooser, FileBrowserWithCustomHandler) i.putExtra(Constants.ALLOWED_FILE_EXTENSIONS, "mkv;mp4;avi");
Use file extensions delimited by semicolon
If you have any questions/queries/Bugs/Hugs please mail @ adityak368@gmail.com