title: get path from Google Drive URI
body: <p>I'm using Android file selection and selecting files from app storage (images, videos, documents). I have an function "getPath" . Im getting path from uri. I have no problem with gallery images or download documents. But when i select a file from google drive i cant get path. This is the google drive uri "content://com.google.android.apps.docs.storage/document/acc%3D25%3Bdoc%3D12" 
  Can you help me about it ?</p>
  
  <p>This is also my "getPath" function.</p>
  
  <pre><code>public static String getPath(final Context context, final Uri uri) {
  
      // check here to KITKAT or new version
      final boolean isKitKat = Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.KITKAT;
  
      // DocumentProvider
      if (isKitKat &amp;&amp; DocumentsContract.isDocumentUri(context, uri)) {
  
          // ExternalStorageProvider
          if (isExternalStorageDocument(uri)) {
              final String docId = DocumentsContract.getDocumentId(uri);
              final String[] split = docId.split(":");
              final String type = split[0];
  
              if ("primary".equalsIgnoreCase(type)) {
                  return Environment.getExternalStorageDirectory() + "/"
                          + split[1];
              }
          }
          // DownloadsProvider
          else if (isDownloadsDocument(uri)) {
  
              final String id = DocumentsContract.getDocumentId(uri);
              final Uri contentUri = ContentUris.withAppendedId(
                      Uri.parse("content://downloads/public_downloads"),
                      Long.valueOf(id));
  
              return getDataColumn(context, contentUri, null, null);
          }
          // MediaProvider
          else if (isMediaDocument(uri)) {
              final String docId = DocumentsContract.getDocumentId(uri);
              final String[] split = docId.split(":");
              final String type = split[0];
  
              Uri contentUri = null;
              if ("image".equals(type)) {
                  contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
              } else if ("video".equals(type)) {
                  contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
              } else if ("audio".equals(type)) {
                  contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
              }
  
              final String selection = "_id=?";
              final String[] selectionArgs = new String[] { split[1] };
  
              return getDataColumn(context, contentUri, selection,
                      selectionArgs);
          }
          else if(isGoogleDriveUri(uri)){
                  //Get google drive path here
  
          }
      }
      // MediaStore (and general)
      else if ("content".equalsIgnoreCase(uri.getScheme())) {
  
          // Return the remote address
          if (isGooglePhotosUri(uri))
              return uri.getLastPathSegment();
  
          return getDataColumn(context, uri, null, null);
      }
      // File
      else if ("file".equalsIgnoreCase(uri.getScheme())) {
          return uri.getPath();
      }
  
      return nopath;
  }
  
  public static String iStreamToString(InputStream is1)
  {
      BufferedReader rd = new BufferedReader(new InputStreamReader(is1), 4096);
      String line;
      StringBuilder sb =  new StringBuilder();
      try {
          while ((line = rd.readLine()) != null) {
              sb.append(line);
          }
          rd.close();
  
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
      String contentOfMyInputStream = sb.toString();
      return contentOfMyInputStream;
  }
  </code></pre>