Android 在webview的文件上载控件中选择文件按钮';行不通

Android 在webview的文件上载控件中选择文件按钮';行不通,android,webview,Android,Webview,我在网页上有一个文件上载控件,并在webview中显示它。但选择的文件不起作用。它没有效果。我正在为此使用以下代码: webView = (WebView) findViewById(R.id.wbvw); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(url); webView.setWebChromeClient(new WebChromeClient() {

我在网页上有一个文件上载控件,并在webview中显示它。但选择的文件不起作用。它没有效果。我正在为此使用以下代码:

webView = (WebView) findViewById(R.id.wbvw);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl(url);

    webView.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/*");
            WebviewActivity.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("*/*");
            WebviewActivity.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/*");
            WebviewActivity.this.startActivityForResult( Intent.createChooser( i, "File Chooser" ), WebviewActivity.FILECHOOSER_RESULTCODE );

        }

    });
webView=(webView)findViewById(R.id.wbvw);
webView.getSettings().setJavaScriptEnabled(true);
loadUrl(url);
setWebView.WebChromeClient(新WebChromeClient()
{
//未记录的magic方法重写
//如果您试图在此处放置@Override,Eclipse将对您发牢骚
//适用于Android 3.0+
public void openFileChooser(ValueCallback uploadMsg){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 setType(“image/*”);
WebviewActivity.this.startActivityForResult(Intent.createChooser(i,“文件选择器”)、文件选择器\u结果代码);
}
//适用于Android 3.0+
public void openFileChooser(ValueCallback uploadMsg,String acceptType){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 集合类型(“*/*”);
WebviewActivity.this.startActivityForResult(
Intent.createChooser(i,“文件浏览器”),
文件选择器\u结果代码);
}
//适用于Android 4.1
public void openFileChooser(ValueCallback uploadMsg、字符串接受类型、字符串捕获){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 setType(“image/*”);
WebviewActivity.this.startActivityForResult(Intent.createChooser(i,“文件选择器”)、WebviewActivity.FILECHOOSER\u RESULTCODE);
}
});
我尝试使用调试器运行代码,但
webView.setWebChromeClient
中的方法不起作用。

使用以下方法:

导入android.content.Context;
导入android.content.Intent;
导入android.net.Uri;
导入android.os.Bundle;
导入android.view.view;
导入android.webkit.JavascriptInterface;
导入android.webkit.ValueCallback;
导入android.webkit.WebChromeClient;
导入android.webkit.WebView;
导入android.webkit.WebViewClient;
导入java.io.*;
导入android.util.*;
导入java.text.*;
导入android.annotation.*;
导入java.util.*;
导入android.app.*;
导入android.provider.*;
导入android.os.*;
导入android.webkit.*;
公共类MainActivity扩展了活动{
公共静态最终整数请求\代码\ LOLIPOP=1;
私人最终静态整数结果\代码\冰淇淋=2;
私有网络视图;
私有值回调mFilePathCallback;
私有字符串mCameraPhotoPath;
private ValueCallback mUploadMessage;
专用字符串url=”http://up.example.com";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView=(webView)findViewById(R.id.wbvw);
设置webView默认值(webView);
loadUrl(url);
setWebView.WebChromeClient(新WebChromeClient(){
私有字符串标签;
//适用于Android 3.0+
public void openFileChooser(ValueCallback uploadMsg){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 setType(“image/*”);
startActivityForResult(Intent.createChooser(i,“文件选择器”),
结果(代码(冰淇淋);
}
//适用于Android 3.0+
public void openFileChooser(ValueCallback uploadMsg,String acceptType){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 集合类型(“*/*”);
startActivityForResult(Intent.createChooser(i,“文件浏览器”),
结果(代码(冰淇淋);
}
//适用于Android 4.1
public void openFileChooser(ValueCallback uploadMsg、字符串接受类型、字符串捕获){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 setType(“image/*”);
startActivityForResult(Intent.createChooser(i,“文件选择器”),
结果(代码(冰淇淋);
}
//对于Android5.0+
公共布尔onShowFileChooser(
WebView WebView,ValueCallback filePathCallback,
文件选择器参数(文件选择器参数){
if(mFilePathCallback!=null){
mFilePathCallback.onReceiveValue(null);
}
mFilePathCallback=filePathCallback;
Intent takePictureIntent=新的意图(MediaStore.ACTION\u IMAGE\u CAPTURE);
if(takePictureContent.resolveActivity(MainActivity.this.getPackageManager())!=null){
//创建照片应该放在哪里的文件
文件photoFile=null;
试一试{
photoFile=createImageFile();
takePictureContent.putExtra(“光路”,mCameraPhotoPath);
}捕获(IOEX异常){
//创建文件时出错
Log.e(标记“无法创建图像文件”,例如);
}
//继续