从android webview访问移动图库

时间:2018-04-06 09:57:35

标签: android android-webview gallery

在我的应用程序中,我使用的是webview。 我想上传的网页(https://www.editorfotosgratis.com/),当从桌面浏览器(例如chrome)访问时,您可以使用“Buscar”按钮从计算机中选择一张照片,上传并编辑它 当我从Android手机的Chrome浏览器访问同一页面时,会询问CAMERA and WRITE / READ_EXTERNAL_STORAGE的权限并打开手机图片的选择。

问题是当我从我的WebView加载此页面时,按下“Buscar”按钮绝对没有。 该应用程序已授予必要的权限,已确认,并且我已尝试在Webview中允许所有类型的文件访问:

webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setAllowContentAccess(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
webView.loadUrl(url);

有人能告诉我我做错了吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

引自:https://www.stackoverflow.com/a/36413800

您需要创建WebChromeClient

在WebViewActivity的onCreate()中执行此操作:

webView.setWebChromeClient(new WebViewChromeClient());

在同一课程中创建MyWebChromeClient

public class MyWebChromeClient extends WebChromeClient {
        // reference to activity instance. May be unnecessary if your web chrome client is member class.
    private MyActivity activity;

    public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
        // make sure there is no existing message
        if (myActivity.uploadMessage != null) {
            myActivity.uploadMessage.onReceiveValue(null);
            myActivity.uploadMessage = null;
        }

        myActivity.uploadMessage = filePathCallback;

        Intent intent = fileChooserParams.createIntent();
        try {
            myActivity.startActivityForResult(intent, MyActivity.REQUEST_SELECT_FILE);
        } catch (ActivityNotFoundException e) {
            myActivity.uploadMessage = null;
            Toast.makeText(myActivity, "Cannot open file chooser", Toast.LENGTH_LONG).show();
            return false;
        }

        return true;
    }
}

希望它有所帮助!!