title: How to get selected file path from GoogleDrive in Android integration?
body: <p>I have successfully integrated GoogleDrive in my Android application and now i can upload any file to drive from app. But i want to download file from drive to device for this i am using some code given below - </p>
  
  <pre><code>import java.net.URI;
  import android.content.Intent;
  import android.content.IntentSender;
  import android.content.IntentSender.SendIntentException;
  import android.net.Uri;
  import android.os.Bundle;
  import android.util.Log;
  
  import com.google.android.gms.drive.Drive;
  import com.google.android.gms.drive.DriveId;
  import com.google.android.gms.drive.OpenFileActivityBuilder;
  
  /**
   * An activity to illustrate how to pick a file with the opener intent.
   */
  public class PickFileWithOpenerActivity extends BaseDemoActivity {
  
   private static final String TAG = "PickFileWithOpenerActivity";
  
   private static final int REQUEST_CODE_OPENER = 1;
  
   @Override
   public void onConnected(Bundle connectionHint) {
    super.onConnected(connectionHint);
    IntentSender intentSender = Drive.DriveApi
      .newOpenFileActivityBuilder()
      .setMimeType(
        new String[] { "text/plain", "text/html",
          "application/pdf", "audio/mp3", "video/mp4",
          "text/plain", "application/msword",
          "image/jpeg", "image/png", "text/html" })
      .build(getGoogleApiClient());
    try {
     startIntentSenderForResult(intentSender, REQUEST_CODE_OPENER, null,
       0, 0, 0);
    } catch (SendIntentException e) {
     Log.w(TAG, "Unable to send intent", e);
    }
  
   }
  
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case REQUEST_CODE_OPENER:
     if (resultCode == RESULT_OK) {
      DriveId driveId = (DriveId) data
        .getParcelableExtra(OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);
      showMessage("Selected file's ID: " + driveId);
  
      Uri uri = data.getData();
      try {
       Log.d(TAG, "Drive Id=============== "
         + uri);
      } catch (Exception e) {
       e.printStackTrace();
      }
  
      // BaseDemoActivity.EXISTING_FILE_ID = driveId.toString();
  
     }
  
     finish();
     break;
    default:
     super.onActivityResult(requestCode, resultCode, data);
    }
   }
  }
  </code></pre>
  
  <p>Here is BaseDemoActivity </p>
  
  <pre><code>import android.app.Activity;
  import android.content.Intent;
  import android.content.IntentSender.SendIntentException;
  import android.os.Bundle;
  import android.util.Log;
  import android.widget.Toast;
  
  import com.google.android.gms.common.ConnectionResult;
  import com.google.android.gms.common.GooglePlayServicesUtil;
  import com.google.android.gms.common.api.GoogleApiClient;
  import com.google.android.gms.drive.Drive;
  
  /**
   * An abstract activity that handles authorization and connection to the Drive
   * services.
   */
  public abstract class BaseDemoActivity extends Activity implements
    GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener {
  
   private static final String TAG = "BaseDriveActivity";
  
   /**
    * DriveId of an existing folder to be used as a parent folder in folder
    * operations samples.
    */
   public static final String EXISTING_FOLDER_ID = "0B2EEtIjPUdX6MERsWlYxN3J6RU0";
  
   /**
    * DriveId of an existing file to be used in file operation samples..
    */
   public static String EXISTING_FILE_ID = "0ByfSjdPVs9MZTHBmMVdSeWxaNTg";
  
   /**
    * Extra for account name.
    */
   protected static final String EXTRA_ACCOUNT_NAME = "account_name";
  
   /**
    * Request code for auto Google Play Services error resolution.
    */
   protected static final int REQUEST_CODE_RESOLUTION = 1;
  
   /**
    * Next available request code.
    */
   protected static final int NEXT_AVAILABLE_REQUEST_CODE = 2;
  
   /**
    * Google API client.
    */
   private GoogleApiClient mGoogleApiClient;
  
   /**
    * Called when activity gets visible. A connection to Drive services need to
    * be initiated as soon as the activity is visible. Registers
    * {@code ConnectionCallbacks} and {@code OnConnectionFailedListener} on the
    * activities itself.
    */
   @Override
   protected void onResume() {
    super.onResume();
    if (mGoogleApiClient == null) {
     mGoogleApiClient = new GoogleApiClient.Builder(this)
       .addApi(Drive.API).addScope(Drive.SCOPE_FILE)
       .addScope(Drive.SCOPE_APPFOLDER)
       // required for App Folder sample
       .addConnectionCallbacks(this)
       .addOnConnectionFailedListener(this).build();
    }
    mGoogleApiClient.connect();
   }
  
   /**
    * Handles resolution callbacks.
    */
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE_RESOLUTION &amp;&amp; resultCode == RESULT_OK) {
     mGoogleApiClient.connect();
    }
   }
  
   /**
    * Called when activity gets invisible. Connection to Drive service needs to
    * be disconnected as soon as an activity is invisible.
    */
   @Override
   protected void onPause() {
    if (mGoogleApiClient != null) {
     mGoogleApiClient.disconnect();
    }
    super.onPause();
   }
  
   /**
    * Called when {@code mGoogleApiClient} is connected.
    */
   @Override
   public void onConnected(Bundle connectionHint) {
    Log.i(TAG, "GoogleApiClient connected");
   }
  
   /**
    * Called when {@code mGoogleApiClient} is disconnected.
    */
   @Override
   public void onConnectionSuspended(int cause) {
    Log.i(TAG, "GoogleApiClient connection suspended");
   }
  
   /**
    * Called when {@code mGoogleApiClient} is trying to connect but failed.
    * Handle {@code result.getResolution()} if there is a resolution is
    * available.
    */
   @Override
   public void onConnectionFailed(ConnectionResult result) {
    Log.i(TAG, "GoogleApiClient connection failed: " + result.toString());
    if (!result.hasResolution()) {
     // show the localized error dialog.
     GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this,
       0).show();
     return;
    }
    try {
     result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION);
    } catch (SendIntentException e) {
     Log.e(TAG, "Exception while starting resolution activity", e);
    }
   }
  
   /**
    * Shows a toast message.
    */
   public void showMessage(String message) {
    Toast.makeText(this, message, Toast.LENGTH_LONG).show();
   }
  
   /**
    * Getter for the {@code GoogleApiClient}.
    */
   public GoogleApiClient getGoogleApiClient() {
    return mGoogleApiClient;
   }
  }
  </code></pre>
  
  <p>I want to get file path in PickFileWithOpenerActivity currently i am getting selected file id using DriveId in onActivityResult Please someone help me and tell me how i can fetch file path and download file from Drive to Device.</p>