Browse Button required?

Hii i am working on an application in which i require to select files using browse button..
How can i implement a browse button in android?

  • Importing Existing Android Project into Eclipse
  • How to create a Drawable with needed background color programmatically?
  • Android SDK - Media Player Video from URL
  • AlertDialog with selector
  • Android: Intent Flag to destroy activity and start new one
  • Intercepting the back button
  • Related posts:

    NoClassDefFoundError on Calligraphy library
    Android record square Video
    Android app crashes with WIN DEATH after memory-intensive activity
    Dismiss PopupWindow on touch outside popup, without using deprecated constructor
    How to quit an application programmatically through button click
    How to monitor HTTP (get, post etc) requests that my app is making in android
  • Android Animation Flicker
  • Cordova Android project doesn't compile
  • Dexopt failed on a very big APK (Out-of-order method_idx) when dex.force.jumbo=true
  • getoutputmediafileuri method is not accessible?
  • INSTALL_PARSE_FAILED_NO_CERTIFICATES error in Eclipse
  • Android Async Data Loading Methods
  • 3 Solutions collect form web for “Browse Button required?”

    Ohh I got downvote….. ok I am updating my answer. I am putting codes for a sample application in which, I used a button which will pick files from any directory of your phone.

    layouts

    file_picker_empty_view.xml

    <TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="No files or directories"
    android:background="@android:drawable/toast_frame"
    android:textSize="28sp"
    android:gravity="center_vertical|center_horizontal"/>
    

    file_picker_list_item.xml

    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal" >
      <ImageView
          android:id="@+id/file_picker_image"
          android:layout_width="40dip"
          android:layout_height="40dip"
          android:layout_marginTop="5dip"
          android:layout_marginBottom="5dip"
          android:layout_marginLeft="5dip"
          android:src="@drawable/file"
          android:scaleType="centerCrop"/>
      <TextView
          android:id="@+id/file_picker_text"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:layout_gravity="left|center_vertical"
          android:textSize="28sp"
          android:layout_marginLeft="10dip"
          android:singleLine="true"
          android:text="filename"/>
    </LinearLayout>
    

    file_view.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" 
    android:orientation="vertical"
    android:layout_width="fill_parent">
        <TextView android:text="@+id/TextView01" 
        android:id="@+id/TextView01" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:singleLine="true" 
        android:textStyle="bold" 
        android:layout_marginTop="5dip" 
        android:layout_marginLeft="5dip"></TextView>
        <TextView android:text="@+id/TextView02" 
        android:id="@+id/TextView02" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="10dip"></TextView>
    </LinearLayout>
    

    main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_vertical">
        <Button android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/start_file_picker_button"
            android:text="Browse" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Selected file"
            android:textStyle="bold"
            android:textColor="#fff"
            android:textSize="24sp" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/file_path_text_view"
            android:text="No file has been selected"
            android:textSize="18sp" />
    </LinearLayout>
    

    Activities are

    FilePickerActivity

    import java.io.File;
    import java.io.FilenameFilter;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import android.app.ListActivity;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.TextView;
    
    /**
     * 
     * @author pankaj
     *
     */
    public class FilePickerActivity extends ListActivity {
    
        public final static String EXTRA_FILE_PATH = "file_path";
        public final static String EXTRA_SHOW_HIDDEN_FILES = "show_hidden_files";
        public final static String EXTRA_ACCEPTED_FILE_EXTENSIONS = "accepted_file_extensions";
        private final static String DEFAULT_INITIAL_DIRECTORY = "/";
    
        protected File mDirectory;
        protected ArrayList<File> mFiles;
        protected FilePickerListAdapter mAdapter;
        protected boolean mShowHiddenFiles = false;
        protected String[] acceptedFileExtensions;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            // Set the view to be shown if the list is empty
            LayoutInflater inflator = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View emptyView = inflator.inflate(R.layout.file_picker_empty_view, null);
            ((ViewGroup)getListView().getParent()).addView(emptyView);
            getListView().setEmptyView(emptyView);
    
            // Set initial directory
            mDirectory = new File(DEFAULT_INITIAL_DIRECTORY);
    
            // Initialize the ArrayList
            mFiles = new ArrayList<File>();
    
            // Set the ListAdapter
            mAdapter = new FilePickerListAdapter(this, mFiles);
            setListAdapter(mAdapter);
    
            // Initialize the extensions array to allow any file extensions
            acceptedFileExtensions = new String[] {};
    
            // Get intent extras
            if(getIntent().hasExtra(EXTRA_FILE_PATH)) {
                mDirectory = new File(getIntent().getStringExtra(EXTRA_FILE_PATH));
            }
            if(getIntent().hasExtra(EXTRA_SHOW_HIDDEN_FILES)) {
                mShowHiddenFiles = getIntent().getBooleanExtra(EXTRA_SHOW_HIDDEN_FILES, false);
            }
            if(getIntent().hasExtra(EXTRA_ACCEPTED_FILE_EXTENSIONS)) {
                ArrayList<String> collection = getIntent().getStringArrayListExtra(EXTRA_ACCEPTED_FILE_EXTENSIONS);
                acceptedFileExtensions = (String[]) collection.toArray(new String[collection.size()]);
            }
        }
    
        @Override
        protected void onResume() {
            refreshFilesList();
            super.onResume();
        }
    
        /**
         * Updates the list view to the current directory
         */
        protected void refreshFilesList() {
            // Clear the files ArrayList
            mFiles.clear();
    
            // Set the extension file filter
            ExtensionFilenameFilter filter = new ExtensionFilenameFilter(acceptedFileExtensions);
    
            // Get the files in the directory
            File[] files = mDirectory.listFiles(filter);
            if(files != null && files.length > 0) {
                for(File f : files) {
                    if(f.isHidden() && !mShowHiddenFiles) {
                        // Don't add the file
                        continue;
                    }
    
                    // Add the file the ArrayAdapter
                    mFiles.add(f);
                }
    
                Collections.sort(mFiles, new FileComparator());
            }
            mAdapter.notifyDataSetChanged();
        }
    
        @Override
        public void onBackPressed() {
            if(mDirectory.getParentFile() != null) {
                // Go to parent directory
                mDirectory = mDirectory.getParentFile();
                refreshFilesList();
                return;
            }
    
            super.onBackPressed();
        }
    
        @Override
        protected void onListItemClick(ListView l, View v, int position, long id) {
            File newFile = (File)l.getItemAtPosition(position);
    
            if(newFile.isFile()) {
                // Set result
                Intent extra = new Intent();
                extra.putExtra(EXTRA_FILE_PATH, newFile.getAbsolutePath());
                setResult(RESULT_OK, extra);
                // Finish the activity
                finish();
            } else {
                mDirectory = newFile;
                // Update the files list
                refreshFilesList();
            }
    
            super.onListItemClick(l, v, position, id);
        }
    
        private class FilePickerListAdapter extends ArrayAdapter<File> {
    
            private List<File> mObjects;
    
            public FilePickerListAdapter(Context context, List<File> objects) {
                super(context, R.layout.file_picker_list_item, android.R.id.text1, objects);
                mObjects = objects;
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
    
                View row = null;
    
                if(convertView == null) { 
                    LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    row = inflater.inflate(R.layout.file_picker_list_item, parent, false);
                } else {
                    row = convertView;
                }
    
                File object = mObjects.get(position);
    
                ImageView imageView = (ImageView)row.findViewById(R.id.file_picker_image);
                TextView textView = (TextView)row.findViewById(R.id.file_picker_text);
                // Set single line
                textView.setSingleLine(true);
    
                textView.setText(object.getName());
                if(object.isFile()) {
                    // Show the file icon
                    imageView.setImageResource(R.drawable.file);
                } else {
                    // Show the folder icon
                    imageView.setImageResource(R.drawable.folder);
                }
    
                return row;
            }
    
        }
    
        private class FileComparator implements Comparator<File> {
            public int compare(File f1, File f2) {
                if(f1 == f2) {
                    return 0;
                }
                if(f1.isDirectory() && f2.isFile()) {
                    // Show directories above files
                    return -1;
                }
                if(f1.isFile() && f2.isDirectory()) {
                    // Show files below directories
                    return 1;
                }
                // Sort the directories alphabetically
                return f1.getName().compareToIgnoreCase(f2.getName());
            }
        }
    
        private class ExtensionFilenameFilter implements FilenameFilter {
            private String[] mExtensions;
    
            public ExtensionFilenameFilter(String[] extensions) {
                super();
                mExtensions = extensions;
            }
    
            public boolean accept(File dir, String filename) {
                if(new File(dir, filename).isDirectory()) {
                    // Accept all directory names
                    return true;
                }
                if(mExtensions != null && mExtensions.length > 0) {
                    for(int i = 0; i < mExtensions.length; i++) {
                        if(filename.endsWith(mExtensions[i])) {
                            // The filename ends with the extension
                            return true;
                        }
                    }
                    // The filename did not match any of the extensions
                    return false;
                }
                // No extensions has been set. Accept all file extensions.
                return true;
            }
        }
    }
    

    MainActivity // This must be your default Activity, as MAIN in manifest

    public class MainActivity extends Activity implements OnClickListener {
    
        private static final int REQUEST_PICK_FILE = 1;
    
        private TextView mFilePathTextView;
        private Button mStartActivityButton;
        private File selectedFile;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            // Set the views
            mFilePathTextView = (TextView)findViewById(R.id.file_path_text_view);
            mStartActivityButton = (Button)findViewById(R.id.start_file_picker_button);
            mStartActivityButton.setOnClickListener(this);      
        }
    
        public void onClick(View v) {
            switch(v.getId()) {
            case R.id.start_file_picker_button:
                // Create a new Intent for the file picker activity
                Intent intent = new Intent(this, FilePickerActivity.class);
    
                // Set the initial directory to be the sdcard
                //intent.putExtra(FilePickerActivity.EXTRA_FILE_PATH, Environment.getExternalStorageDirectory());
    
                // Show hidden files
                //intent.putExtra(FilePickerActivity.EXTRA_SHOW_HIDDEN_FILES, true);
    
                // Only make .png files visible
                //ArrayList<String> extensions = new ArrayList<String>();
                //extensions.add(".png");
                //intent.putExtra(FilePickerActivity.EXTRA_ACCEPTED_FILE_EXTENSIONS, extensions);
    
                // Start the activity
                startActivityForResult(intent, REQUEST_PICK_FILE);
                break;
    
            case R.id.You_can_handle_more_onclick_events_from_here:
                //Do something
                break;
            }
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if(resultCode == RESULT_OK) {
                switch(requestCode) {
                case REQUEST_PICK_FILE:
                    if(data.hasExtra(FilePickerActivity.EXTRA_FILE_PATH)) {
                        // Get the file path
                        selectedFile = new File(data.getStringExtra(FilePickerActivity.EXTRA_FILE_PATH));
                        // Set the file path text view
                        mFilePathTextView.setText(selectedFile.getPath());  
                        //Now you have your selected file, You can do your additional requirement with file.                
                    }
                }
            }
        }
    }
    

    Now Iam uploading images, You can use your own images.

    Image Name: file

    enter image description here

    Image Name: folder

    enter image description here

    and finally

    AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="org.myContactAdder.adder"
          android:versionCode="1"
          android:versionName="1.0">
          <uses-permission android:name="android.permission.READ_CONTACTS" />
          <uses-permission android:name="android.permission.WRITE_CONTACTS" />
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".FilePickerActivity"
                      android:label="@string/app_name">
            </activity>
            <activity android:name=".MainActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        <uses-sdk android:minSdkVersion="7" />
    
    </manifest> 
    

    These are links for more information: Android file picker Activity and Creating simple file chooser.

    You need to do:

    1. Create a button which runs a separate activity(startActivityForResult).

    2. This file choosing activity should list all the files and folders from a particular location. If you click on a folder, then activity is reinitialized for this folder(list the files from this).

    3. If a file clicked, then activity should set the result, passing the filename in extras, and finish.

    Here is some code you can use to do a file picker:

    http://www.kaloer.com/android-file-picker-activity

    It has an Apache license.

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.