webview选择本地文件关闭文件打开方式弹窗后无法获取弹窗关闭事件

webview选择本地文件关闭文件打开方式弹窗后无法获取弹窗关闭事件-鸿蒙开发者社区

弹窗如下:

webview选择本地文件关闭文件打开方式弹窗后无法获取弹窗关闭事件-鸿蒙开发者社区

webview文件选择
2021-08-09 11:42:33
浏览
已于2021-8-9 11:42:54修改
1
收藏 0
回答 4
待解决
回答 4
按赞同
/
按时间
爱吃土豆丝的打工人
1

如果是跳转必定会出现回调,不能拦截到“取消”按钮的点击事件,那就去拦截跳转回调的的结果。用回调结果做拦截器修改你的urisCallbackAll 的状态

分享
微博
QQ
微信
回复4
2021-08-09 14:48:44
seashell_
1

mWebView.setBrowserAgent(new BrowserAgent(WebViewSlice.this) {
        //本地文件选择
        @Override
        public boolean onPickFiles(WebView webView, AsyncCallback<Uri[]> urisCallback, PickFilesParams params) {
            urisCallbackALL = urisCallback;
            Intent intent = new Intent();
            Operation opt = new Intent
                    .OperationBuilder()
                    .withAction("android.intent.action.GET_CONTENT")
                    .build();
            intent.setOperation(opt);
            intent.addFlags(Intent.FLAG_NOT_OHOS_COMPONENT);
            intent.setType("image/*");
            startAbilityForResult(intent, imgRequestCode);
            isReceive = false;
            getMainTaskDispatcher().delayDispatch(new Runnable() {
                @Override
                public void run() {
                    if (urisCallbackALL!= null && getAbility().getState() == AbilityLifecycleExecutor.LifecycleState.ACTIVE) {
                        try {
                            urisCallbackALL.onReceive(null);
                            isReceive = true;
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }, 1700);
            return true;
        }

        @Override
        public void onProgressUpdated(WebView webView, int newValue) {
            super.onProgressUpdated(webView, newValue);
            if (newValue == 100) {
                getMainTaskDispatcher().delayDispatch(() -> {
                    dissDialog();
                },getDelayTime());
            }
        }
    });
    //监听输入,输入调节键盘
    getWindow().setInputPanelDisplayType(WindowManager.LayoutConfig.INPUT_ADJUST_PAN);
}
boolean isReceive;
private long getDelayTime() {
    if (mUrl != null && mUrl.equals(Constanst.CONTACT_TEACHER)) {
        return 1000;
    }
    return 0;
}

//经过排查,传dataability:///,input无法拿到file
//使用content://解决问题
@Override
protected void onAbilityResult(int requestCode, int res

分享
微博
QQ
微信
回复1
2021-08-12 18:29:53
seashell_

不知道是否应该归类问题为系统设计问题。但至少到现在我还没找到相关的回调函数。

 

分享
微博
QQ
微信
回复
2021-08-09 15:29:39
Wasre_marerial

遇到同样的问题,选择文件打开一个新页面之后,再回到webview,选择文件的按钮就不能再触发选择事件了,有没有大佬有解决方案,跪求

 

分享
微博
QQ
微信
回复2
2021-08-12 13:39:28
相关问题
弹窗打开关闭动画是否支持自定义
2062浏览 • 1回复 待解决
HarmonyOS 如何先关闭键盘 再关闭弹窗
253浏览 • 1回复 待解决
全局关闭弹窗如何实现?
96浏览 • 2回复 待解决
如何打开指定文件夹,选择文件返回
8563浏览 • 1回复 待解决
【ets】switch开关打开后会自动关闭
3293浏览 • 1回复 待解决