4

我的应用程序中有一个 webview。网页中有一个浏览(上传文件)按钮。当我在 HTC (Android 4.0.3) 中测试应用程序时,它可以工作,但在 Galaxy S3 (Android 4.1.1) 中它不工作。

我不会得到文件选择器菜单。显然,当我触摸屏幕的任何位置时,按钮是不可点击的

“singleCursorHandlerTouchEvent -getEditableSupport FASLE”。

我已经尝试了所有可能的解决方案。

    // Profile web view
    mWebView = (WebView) findViewById(R.id.itemWebView);
    //improve the speed
    mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setSupportZoom(false);
    //setup the file chooser
    mWebView.setWebChromeClient(new WebChromeClient() {
        public void openFileChooser(ValueCallback<Uri> uploadMsg) {  

            mUploadMessage = uploadMsg;
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType("image/*");
            ProfileActivity.this.startActivityForResult(Intent.createChooser(i, "Image Chooser"),FILECHOOSER_RESULTCODE);
        }

        @SuppressWarnings("unused")
        public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
            openFileChooser(uploadMsg);
        }

        @SuppressWarnings("unused")
        public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
            openFileChooser(uploadMsg);
        } 

    });

这是我的 onActivityResult 函数

protected void onActivityResult(int requestCode, int resultCode,
        Intent intent) {
    if (requestCode == FILECHOOSER_RESULTCODE) {
        if (null == mUploadMessage)
            return;
        Uri result = intent == null || resultCode != RESULT_OK ? null
                : intent.getData();
        mUploadMessage.onReceiveValue(result);
        mUploadMessage = null;
    } else {
        System.out.println("Something else->" + requestCode);
    }
}

在我的 jQuery 移动网页中,我有一个简单的表单:

<form id="edit" method="post" enctype="multipart/form-data" data-ajax="false" action = "profile_myimage.php">
            <div data-role="fieldcontain">
                <label for="image" class="required">Select photo</label>
                <input type="file" name="image" id="image" />
                <p class="error_message" id="img"><p>
            </div>

请帮我解决这个问题。我感谢您的支持。

4

3 回答 3

1

我刚刚遇到了同样的问题,对我来说问题(似乎只在 Android 2.xx 上)是 WebView 没有获得焦点。

您可以这样做以在收到触摸时请求关注您的 WebView:

webView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN && !view.hasFocus()) {
            view.requestFocus();
        }
        return false;
    }
});

请参阅android WebView - 内容不可编辑

于 2013-07-09T01:40:42.180 回答
0

我在使用 WebViewClient 和表单开发应用程序时遇到了同样的问题。原来解决方案是让你的输入更大(确保它没有溢出)

我的 HTML 布局是

<form>
  <div>
    <input type="text" onclick="..." />
    <span>...</span>
  </div>
</form>

将一些大小调整 CSS 应用于元素。父 div 上面有溢出:隐藏,所以当你在浏览器中查看页面时,输入元素有一个滚动条。修复此问题使 onclick 再次开始正确触发,并使输入可以从 android 应用程序中选择。

看看这个问题(帮我解决了这个问题):Phonegap button does not fire due to "singleCursorHandlerTouchEvent -getEditableSupport FASLE"

于 2013-02-02T20:55:02.530 回答
0

我有一个类似的问题:singleCursorHandlerTouchEvent -getEditableSupport FASLE

似乎android(在三星s3 mini上)不喜欢div元素中有一个滚动条,其中包含文件输入按钮。

这就是我所拥有的:

<div style ="overflow: auto; white-space: nowrap;" class="panel-body commentForm" />

这就是它现在的工作方式:

<div class="panel-body commentForm" />
于 2014-01-16T09:45:12.353 回答