title: File upload in web view not working
body: <p>I'm trying to make it possible to upload files via a web view but it is not happening currently, I'm looking at <a href="https://stackoverflow.com/questions/5907369/file-upload-in-webview">this famous answer</a> and here are my</p>
  
  <p>MainActivity.java</p>
  
  <pre><code>package ...;
  
  import android.app.Activity;
  import android.content.Intent;
  import android.net.Uri;
  import android.os.Bundle;
  import android.webkit.ValueCallback;
  import android.webkit.WebChromeClient;
  import android.webkit.WebView;
  import android.webkit.WebViewClient;
  
  public class MainActivity extends Activity {
  
      private ValueCallback&lt;Uri&gt; mUploadMessage;
      private final static int FILECHOOSER_RESULTCODE = 1;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          WebView wv = (WebView) findViewById(R.id.webView);
          wv.getSettings().setJavaScriptEnabled(true);
          wv.setWebViewClient(new WebViewClient());
          wv.setWebChromeClient(new WebChromeClient() {
              //The undocumented magic method override
              //Eclipse will swear at you if you try to put @Override here
              public void openFileChooser(ValueCallback&lt;Uri&gt; uploadMsg) {
                  MainActivity.this.showAttachmentDialog(uploadMsg);
              }
  
              // For Android &gt; 3.x
              public void openFileChooser(ValueCallback&lt;Uri&gt; uploadMsg, String acceptType) {
                  MainActivity.this.showAttachmentDialog(uploadMsg);
              }
  
              // For Android &gt; 4.1
              public void openFileChooser(ValueCallback&lt;Uri&gt; uploadMsg, String acceptType, String capture) {
                  MainActivity.this.showAttachmentDialog(uploadMsg);
              }
          });
  
          wv.loadUrl("http://www.tizag.com/phpT/fileupload.php");
  
      }
  
      private void showAttachmentDialog(ValueCallback&lt;Uri&gt; uploadMsg) {
          this.mUploadMessage = uploadMsg;
  
          Intent i = new Intent(Intent.ACTION_GET_CONTENT);
          i.addCategory(Intent.CATEGORY_OPENABLE);
          i.setType("*/*");
  
          this.startActivityForResult(Intent.createChooser(i, "Choose type of attachment"), FILECHOOSER_RESULTCODE);
      }
  
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
          if (requestCode == FILECHOOSER_RESULTCODE) {
              if (null == this.mUploadMessage) {
                  return;
              }
              Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
              this.mUploadMessage.onReceiveValue(result);
              this.mUploadMessage = null;
          }
      }
  }
  </code></pre>
  
  <p>activity_main.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context="....MainActivity"&gt;
  
      &lt;WebView
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:id="@+id/webView"
          android:layout_alignParentTop="true"
          android:layout_alignParentRight="true"
          android:layout_alignParentEnd="true" /&gt;
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>and permissions</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="..."&gt;
  
      &lt;application
          android:allowBackup="true"
          android:icon="@mipmap/ic_launcher"
          android:label="@string/app_name"
          android:supportsRtl="true"
          android:theme="@style/AppTheme"&gt;
          &lt;activity android:name=".MainActivity"&gt;
              &lt;intent-filter&gt;
                  &lt;action android:name="android.intent.action.MAIN" /&gt;
  
                  &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
              &lt;/intent-filter&gt;
          &lt;/activity&gt;
      &lt;/application&gt;
  
      &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
      &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt;
      &lt;uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /&gt;
  
  
  &lt;/manifest&gt;
  </code></pre>
  
  <p>If you set these 3 files and run it, I have set the webview url to a page which contains a file input, you will see it is not working. I am using API version 19+</p>
  
  <p>I'm going to cry soon.</p>