为了账号安全,请及时绑定邮箱和手机立即绑定

无法让 android webview 在 android 9 上打开文件选择器

无法让 android webview 在 android 9 上打开文件选择器

幕布斯7119047 2023-11-10 16:23:29
我正在尝试type="file"在移动设备上的应用程序中打开输入文件选择器WebView,但处理同一问题的其他问题给出的解决方案适用于早期的 Android 版本,并且似乎不适用于 Android 9。问题似乎出在这段特定的代码就在这里://For Lollipop 5.0+ Devices:  @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)    public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)    {        if (uploadMessage != null) {            uploadMessage.onReceiveValue(null);            uploadMessage = null;        }        uploadMessage = filePathCallback;        Intent intent = fileChooserParams.createIntent();        try        {            startActivityForResult(intent, REQUEST_SELECT_FILE);        } catch (ActivityNotFoundException e)        {            uploadMessage = null;            Toast.makeText(MainActivity.this, "Error: Unable to open file browser", Toast.LENGTH_LONG).show();            return false;        }        return true;    }
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

在这里使用此代码修复。


        // For Lollipop 5.0+ Devices

        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)

        public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)

        {

            if (uploadMessage != null) {

                uploadMessage.onReceiveValue(null);

                uploadMessage = null;

            }


            uploadMessage = filePathCallback;


            Intent intent = fileChooserParams.createIntent();

            try

            {

                intent.setAction(Intent.ACTION_GET_CONTENT);

                intent.setType("image/*,video/*,audio/*,file/*");

                startActivityForResult(intent, REQUEST_SELECT_FILE);

            } catch (ActivityNotFoundException e)

            {

                uploadMessage = null;

                Toast.makeText(MainActivity.this, "Error: Unable to open file browser", Toast.LENGTH_LONG).show();

                return false;

            }

            return true;

        }


查看完整回答
反对 回复 2023-11-10
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信