kann die Dateiauswahl in WebView Android 4.4.2 mit WebChromeClient nicht öffnen

In meiner Webansicht durch Klicken auf"Datei wählen" button In Samsung 7-Zoll-Tablet möchte ich einen Dateibrowser öffnen, aber ich kann dies nicht in @ öffneAndroid Version 4.4.2. Kannst du mir dabei helfen? Hier ist mein Code.

WebViewDemo.java

package com.example.webviewdemo;

import java.io.File;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Parcelable;
import android.provider.MediaStore;
import android.webkit.ConsoleMessage;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings.PluginState;
import android.widget.ProgressBar;
import android.widget.Toast;

public class WebViewDemo extends Activity {
    /** Called when the activity is first created. */

    WebView web;

    private ValueCallback<Uri> mUploadMessage;
    private final static int FILECHOOSER_RESULTCODE=1;

    @Override
    protected void onActivityResult(int requestCode, int resultCode,
                                    Intent intent) {
        if(requestCode==FILECHOOSER_RESULTCODE)
        {
            if (null == mUploadMessage) return;
            Uri result = intent == null || resultCode != RESULT_OK ? null
                    : intent.getData();
            mUploadMessage.onReceiveValue(result);
            mUploadMessage = null;
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.show_web_view);

        web = (WebView) findViewById(R.id.webView1);

        web = new WebView(this);
        web.getSettings().setJavaScriptEnabled(true);
        web.loadUrl("file:///android_asset/select.html");
        web.setWebViewClient(new myWebClient());
        web.setWebChromeClient(new WebChromeClient()
        {
            //The undocumented magic method override
            //Eclipse will swear at you if you try to put @Override here
            // For Android 3.0+
            public void openFileChooser(ValueCallback<Uri> uploadMsg) {

                mUploadMessage = uploadMsg;
                Intent i = new Intent(Intent.ACTION_GET_CONTENT);
                i.addCategory(Intent.CATEGORY_OPENABLE);
                i.setType("image/*");
                WebViewDemo.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);

            }

            // For Android 3.0+
            public void openFileChooser( ValueCallback uploadMsg, String acceptType ) {
                mUploadMessage = uploadMsg;
                Intent i = new Intent(Intent.ACTION_GET_CONTENT);
                i.addCategory(Intent.CATEGORY_OPENABLE);
                i.setType("*/*");
                WebViewDemo.this.startActivityForResult(
                        Intent.createChooser(i, "File Browser"),
                        FILECHOOSER_RESULTCODE);
            }

            //For Android 4.1
            public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
                mUploadMessage = uploadMsg;
                Intent i = new Intent(Intent.ACTION_GET_CONTENT);
                i.addCategory(Intent.CATEGORY_OPENABLE);
                i.setType("image/*");
                WebViewDemo.this.startActivityForResult( Intent.createChooser( i, "File Chooser" ), WebViewDemo.FILECHOOSER_RESULTCODE );

            }

        });


        setContentView(web);


    }

    public class myWebClient extends WebViewClient
    {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub

            view.loadUrl(url);
            return true;

        }

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);

        }
    }

    //flipscreen not loading again
    @Override
    public void onConfigurationChanged(Configuration newConfig){
        super.onConfigurationChanged(newConfig);
    }

// To handle "Back" key press event for WebView to go back to previous screen.
/*@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
        web.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}*/
}

Inside assets / select.html

<!DOCTYPE html>
<html>
<head>

</head>
<body>

<div data-role="page" id="pageone">
  <div data-role="header">
  <h1>PRODUCT DETAIL</h1>
  </div>

<div data-role="content">
<form method="get" action="">

   <div data-role="fieldcontain">
    <label for="name">Open File Chosser And Select File From Camera :</label>
    <input type="file" name="text" id="name" type="image/*" >
    </div>
  <div data-role="fieldcontain">
    <label for="name">Email:</label>
    <input type="text" name="text" id="name" value="" placeholder="What's Your Name?">
    </div>

    <div data-role="fieldcontain">
    <label for="search">Looking for anything?</label>
    <input type="search" name="search" id="search" value="" placeholder="Search for content"/>
  </div>

  <div data-role="fieldcontain">
    <label for="colors"><a href="http://www.androidexample.com/media/webview/webview_browser.html">Open link in webview browser.</a></label>
    <br>
    <br>
    <label for="colors"><a href="http://www.google.com/">Open link in new browser.</a></label>

 </div>

   </div>

</form>
</div>
</div>

</body>
</html>

Antworten auf die Frage(8)

Ihre Antwort auf die Frage