title: How to get the file path from a URI that points to a PDF document?
body: <p>Right now my code opens up the default downloads view and it only shows me the PDFs I downloaded. I choose a PDF file and I get this:</p>
  
  <blockquote>
    <p>content://com.android.providers.downloads.documents/document/1171</p>
  </blockquote>
  
  <p>I want to get this:</p>
  
  <blockquote>
    <p>/storage/emulated/0/Download/ch22Databases.pdf</p>
  </blockquote>
  
  <p>My question is how do I do this in Android?</p>
  
  <p>My code:</p>
  
  <pre><code>public void PDF() {
      PDF = (Button) findViewById(R.id.FindPDFBtn);//Finds the button in design and put it into a button variable.
      PDF.setOnClickListener(//Listens for a button click.
          new View.OnClickListener() {//Creates a new click listener.
              @Override
              public void onClick(View v) {//does what ever code is in here when the button is clicked
                  Intent intent = new Intent();
                  intent.setType("application/pdf");
                  intent.setAction(Intent.ACTION_GET_CONTENT);
                  startActivityForResult(Intent.createChooser(intent, "Select a PDF "), SELECT_PDF);
              }
          }
      );
  }
  
  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
  
      //PDF
      if (resultCode == RESULT_OK) {
          if (requestCode == SELECT_PDF) {
              Uri selectedUri_PDF = data.getData();
              SelectedPDF = getPDFPath(selectedUri_PDF);
          }
      }
  }
  
  public String getPDFPath(Uri uri) {
      String[] projection = { MediaStore.Images.Media.DATA };
      Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
      cursor.moveToFirst();
      return cursor.getString(column_index);
  }
  </code></pre>