Android webview onShowFileChooser onReceiveValue无效

时间:2018-10-16 12:20:07

标签: android

public class MyWebViewChromeClient extends WebChromeClient {
    private ValueCallback<Uri> uploadMessage;
    private ValueCallback<Uri[]> uploadMessageAboveL;

    // For Android >= 5.0
    @Override
    public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {

        File file = new File("storage/emulated/0/Android/data/com.mycompanydomain.proejectname/files/Pictures/JPEG_21652498916216.jpg");
        if (file.exists()) {
            Log.e("BBBBBBBB","fileexists");
        } else {
            Log.e("BBBBBBBB","filenotexists");
        }

        filePathCallback.onReceiveValue(new Uri[]{Uri.parse("storage/emulated/0/Android/data/com.mycompanydomain.proejectname/files/Pictures/JPEG_21652498916216.jpg")});
        return true;
    }
}

我正在尝试在webview中处理文件上传。我能够收到文件上传请求,然后使用意图拍照并成功将其保存到路径。 但是,看来

filePathCallback.onReceiveValue(new Uri[]{Uri.parse("storage/emulated/0/Android/data/com.mycompanydomain.proejectname/files/Pictures/JPEG_21652498916216.jpg")});

不起作用,因为Webview无法接收到图像并且什么也没发生。

它表明该文件确实存在,但是Webview只是没有响应,并且上面的代码完全没有作用。 我无法弄清楚代码出了什么问题,有人可以帮助我吗? 非常感谢。

1 个答案:

答案 0 :(得分:2)

我终于自己解决了这个问题。

var rootObject = new RootObject();
List<Attribute> attribute = new List<Attribute>();
rootObject.test = attribute;
string JSONresult = JsonConvert.SerializeObject(rootObject);

上面的代码对我有用。