title: Unable to access file from uri
body: <p>I am trying to access a file using Storage Access Framework which I have stored in locally and send it to server. but when ever I try to get file using <strong>URI</strong> I get <strong>NullPointerException</strong>. However I get the URI of file. but catches exception when converting to file by getting path.
  Minimum API is 17</p>
  
  <blockquote>
    <p>uriString =
    content://com.android.providers.downloads.documents/document/349</p>
  </blockquote>
  
  <pre><code>     warantyButton.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
                      Intent intent = new Intent(Intent. ACTION_OPEN_DOCUMENT );
                      intent.addCategory(Intent.CATEGORY_OPENABLE);
                      intent.setType("*/*");
                      Intent i = Intent.createChooser(intent, "File");
                      getActivity().startActivityForResult(i, FILE_REQ_CODE);
                     //Toast.makeText(getContext(),"Files",Toast.LENGTH_SHORT).show();
                  }
              });
  
  
       @Override
          public void onActivityResult(int requestCode, int resultCode, Intent data) {
              super.onActivityResult(requestCode, resultCode, data);
              if (requestCode == FILE_REQ_CODE) {
                  if (resultCode == RESULT_OK) {
                      String path="";
                      Uri uri = data.getData();
                      if (uri != null) {
                          try {
                              file = new File(getPath(getContext(),uri));
                              if(file!=null){
                                  ext = getMimeType(uri);
                                  sendFileToServer(file,ext);
                              }
  
                          } catch (Exception e) {
                              Toast.makeText(getContext(),getString(R.string.general_error_retry),Toast.LENGTH_SHORT).show();
                              e.printStackTrace();
                          }
                      }
                  }
  
              }
  
          }
  
  
  
  public static String getPath(Context context, Uri uri) throws URISyntaxException {
          if ("content".equalsIgnoreCase(uri.getScheme())) {
              String[] projection = { "_data" };
              Cursor cursor = null;
  
              try {
                  cursor = context.getContentResolver().query(uri, projection, null, null, null);
                  int column_index = cursor.getColumnIndexOrThrow("_data");
                  if (cursor.moveToFirst()) {
                      return cursor.getString(column_index);
                  }
              } catch (Exception e) {
                  // Eat it
              }
          }
          else if ("file".equalsIgnoreCase(uri.getScheme())) {
              return uri.getPath();
          }
  
              return null;
          }
  </code></pre>