title: Cordova android input file: cannot access some directories on device
body: <p>My app, based on Cordova, allows users to upload images and PDF files to server. 
  I'm using a simple <code>&lt;input type="file"&gt;</code> with the Dropzone.js plugin for layout and transport. It works fine for both iOS and Android. After clicking a button the file manager starts, you can choose file and it gets uploaded.</p>
  
  <p>The problem is, on Android the user cannot choose files from directories in the upper part of the file selector. I have an LG G4, so I cannot choose from Last files, Google Drive, Images, Downloaded, Internal memory. I can choose from Gallery, Photos and File manager without any problem, but not any directory above the line.</p>
  
  <p>I have permissions to read external storage. What am I missing here?</p>
  
  <p>Here's screen from the tester:
  <a href="https://i.stack.imgur.com/YRa45.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/YRa45.png" alt="Screen form the tester"></a></p>
  
  <p>Dropzone html, its as basic as it gets. Dropzone does not add here input type=file, but, much like jQuery, does it on the fly when file is selected.</p>
  
  <pre><code>&lt;form action="file-upload" class="dropzone dropzone-form dz-clickable" rem="dropform" id="dropzone-form"&gt;
              &lt;input type="hidden" name="userId" value.bind="user_id" class="au-target" au-target-id="164"&gt;
              &lt;div class="text-center add_btn_wrapper"&gt;
                  &lt;a class="btn btn-default btn-md dz-clickable" rem="dropbutton"&gt;Select file&lt;/a&gt;
              &lt;/div&gt;
              &lt;div class="dz-default dz-message"&gt;
                  &lt;span&gt;Upload your scans&lt;/span&gt;
              &lt;/div&gt;
      &lt;/form&gt;
  </code></pre>
  
  <p>Dropzone js declaration (I'm using Aurelia.js (es5/6) as frontend framework):</p>
  
  <pre><code>this.zone = new Dropzone(
      _this.element.querySelector("[rem='dropform']"), { 
          url: this.auth.config.baseUrl + "../_uploader/file/upload",
          maxFiles: this.max_files,
          acceptedFiles: this.accepted_files,
          clickable: [_this.element.querySelector("[rem='dropbutton']"), _this.element.querySelector("[rem='dropform']")],
          dictDefaultMessage: this.label,
          addRemoveLinks: this.allow_remove,
          removedfile: (file) =&gt; { .... },
          init: function() {
              this.on("addedfile", (fx) =&gt; { .... });
              this.on("complete", (fx) =&gt; { .... });
          }
      });
  </code></pre>
  
  <p>And in AndroidManifest.xml:</p>
  
  <pre><code>&lt;uses-permission android:name="android.permission.INTERNET"/&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/&gt;
  &lt;uses-permission android:name="android.permission.RECORD_AUDIO"/&gt;
  &lt;uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/&gt;
  &lt;uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/&gt;
  &lt;uses-permission android:name="android.permission.WAKE_LOCK"/&gt;
  &lt;uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/&gt;
  </code></pre>