0.1.11 (Apr 27, 2020)
Aug 16, 2019
Apr 27, 2020
Hagen Brooks (HBiSoft)
Hagen Brooks (HBiSoft)
Source code
APK file

Show card


An Android library that returns real paths from Uri's

Then, add the dependency, in your app level build.gradle:

dependencies {
    implementation 'com.github.HBiSoft:PickiT:0.1.11'


First, implement PickiT callbacks, as shown below:

public class MainActivity extends Activity implements PickiTCallbacks {

Alt+Enter to implement the methods, we will discuss the methods later in the readme.

Implement pickiT in your onCreate() method, as shown below:

public class MainActivity extends AppCompatActivity implements PickiTCallbacks {
    //Declare PickiT
    PickiT pickiT;

    protected void onCreate(Bundle savedInstanceState) {

        //Initialize PickiT
        //context, listener, activity
        pickiT = new PickiT(this, this, this);


You can now select a file as you usually would (have a look at the demo if you don't know how to do this).

Then in onActivityResult, you can pass the path to PickiT, as shown below:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == SELECT_VIDEO_REQUEST) {
        if (resultCode == RESULT_OK) {
            pickiT.getPath(data.getData(), Build.VERSION.SDK_INT);


Dropbox, Google Drive, OneDrive and files from unknown file providers:

If the selected file was from Dropbox,Google Drive, OneDrive or an unknown file provider, it will then be copied/created inInternal Storage - Android - data - your.package.name - files - Temp

It is your responsibility to delete the file when you are done with it, by calling:


This can be done in onBackPressed and onDestroy, as shown below:

public void onBackPressed() {

public void onDestroy() {
    if (!isChangingConfigurations()) {

If you do not call pickiT.deleteTemporaryFile();, the file will remain in the above mentioned folder and will be overwritten each time you select a new file from Dropbox,Google Drive, OneDrive or an unknown file provider.

Callback methods

//When selecting a file from Google Drive, for example, the Uri will be returned before the file is available(if it has not yet been cached/downloaded).
//We are unable to see the progress
//Apps like Dropbox will display a dialog inside the picker
//This will only be called when selecting a drive file
public void PickiTonUriReturned() {
    //Use to let user know that we are waiting for the application to return the file
    //See the demo project to see how I used this.

//Called when the file creations starts (similar to onPreExecute)
//This will only be called if the selected file is not local or if the file is from an unknown file provider
public void PickiTonStartListener() {
    //Can be used to display a ProgressDialog

//Returns the progress of the file being created (in percentage)
//This will only be called if the selected file is not local or if the file is from an unknown file provider
public void PickiTonProgressUpdate(int progress) {
    //Can be used to update the progress of your dialog

//If the selected file was a local file then this will be called directly, returning the path as a String.
//String path - returned path
//boolean wasDriveFile - check if it was a drive file
//boolean wasUnknownProvider - check if it was from an unknown file provider
//boolean wasSuccessful - check if it was successful
//String reason - the get the reason why wasSuccessful returned false
public void PickiTonCompleteListener(String path, boolean wasDriveFile, boolean wasUnknownProvider, boolean wasSuccessful, String reason) {
    //Dismiss dialog and return the path

Have a look at the demo project if you have any issues implementing the library.