android - 从 android webview 访问移动画廊

标签 android android-webview gallery

在我的应用程序中,我使用的是 webview。 我要上传的网站 ( https://www.editorfotosgratis.com/ ),当从桌面浏览器(例如 chrome)访问时,您可以从计算机中选择一张照片,使用“Buscar”按钮,上传并编辑它 当我从我的 Android 手机的 Chrome 浏览器访问同一页面时,它会请求 CAMERA 和 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);

谁能告诉我我做错了什么?

提前致谢

最佳答案

引自: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;
    }
}

希望对您有所帮助!!

关于android - 从 android webview 访问移动画廊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49690156/

相关文章:

java - Android ScrollView 从子 WebView 窃取触摸事件

c# - 如何将上下文指示器添加到翻转 View

android - 位置管理器删除更新权限

android - WebView Youtube 全屏模式

分享来自 YouTube 的链接时 Android 应用程序不可见

android - WebView 的行为不像 Chrome

html - 在图库中使用 MixItUp 插件

android - 带 View 的 Coverflow

Android:如何判断服务何时完成

java - 自签名证书