从android网络视图访问移动多媒体资料

从android网络视图访问移动多媒体资料,android,android-webview,gallery,Android,Android Webview,Gallery,在我的应用程序中,我使用的是webview。 我想上传的网站(),当从桌面浏览器(例如chrome)访问时,您可以使用“Buscar”按钮从计算机中选择照片,上传并编辑它 当我从Android手机的Chrome浏览器访问同一页面时,它会要求获得摄像头和写入/读取\u外部\u存储器的权限,并打开手机的图像选择 问题是当我从我的WebView加载此页面时,按下“Buscar”按钮完全没有任何作用应用程序已授予必要的权限,已确认,我已尝试在webview中允许对文件的所有类型的访问: webView.

在我的应用程序中,我使用的是
webview
。 我想上传的网站(),当从桌面浏览器(例如chrome)访问时,您可以使用“Buscar”按钮从计算机中选择照片,上传并编辑它 当我从Android手机的Chrome浏览器访问同一页面时,它会要求获得
摄像头和写入/读取\u外部\u存储器的权限
,并打开手机的图像选择

问题是当我从我的
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);
有人能告诉我我做错了什么吗

提前感谢

引自:

您需要创建一个
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;
    }
}
公共类MyWebChromeClient扩展WebChromeClient{
//对活动实例的引用。如果您的web chrome客户端是成员类,则可能不需要引用。
私人活动;
公共布尔onShowFileChooser(WebView WebView、ValueCallback filePathCallback、FileChooseParams FileChooseParams){
//确保没有现有消息
if(myActivity.uploadMessage!=null){
myActivity.uploadMessage.onReceiveValue(null);
myActivity.uploadMessage=null;
}
myActivity.uploadMessage=filePathCallback;
Intent Intent=fileChooserParams.createIntent();
试一试{
myActivity.startActivityForResult(intent,myActivity.REQUEST\u SELECT\u文件);
}捕获(ActivityNotFounde异常){
myActivity.uploadMessage=null;
Toast.makeText(myActivity,“无法打开文件选择器”,Toast.LENGTH_LONG.show();
返回false;
}
返回true;
}
}
希望能有帮助