【问题标题】:Jquery mobile File control not working in deviceJquery mobile文件控件在设备中不起作用
【发布时间】:2013-04-16 09:03:33
【问题描述】:

我在 jquery mobile 1.2.0 中使用默认的File 控件。它在浏览器中工作正常。但它不能在设备中工作。我试过三星 Galaxy Tab 2。

控制 html 看起来像:

<div id="divattachImg" data-role="fieldcontain">
    <label for="attachImg">Attach Image (Optional):</label>
    <input type="file" name="attachImg" id="attachImg" value="" maxlength="45">
</div>

当我点击设备中的控件时,它什么也不做。就像,点击从未发生过。 我在这里做错了什么还是jqm有这个问题?如果是这样,您能建议任何解决方法吗?

任何帮助将不胜感激。

P.S:我在 android webview 中使用它。 (不是phonegap。)

【问题讨论】:

  • 安卓版本?浏览器还是 Phonegap 应用?
  • 安卓版@Gajotres
  • 你的 Galaxy Tab 上的 android 版本是什么?
  • ICS @Gajotres 。安卓4.0

标签: android jquery jquery-mobile file-upload android-webview


【解决方案1】:

嗯,Gajotres 已经回答了我的问题,但由于它不起作用,他删除了那个答案。 但他在回答中提供了link,帮助我解决了我的问题。我正在回答我的问题,希望它在将来对其他人有所帮助。

在该教程中,last comment 包含一个working exampleThat example 声明您需要为 3.x 使用具有不同参数的方法。我用过它,它奏效了。

所以最终的解决方案是:

private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE = 1;

public class MyWebChromeClient extends 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/*");
            System.out.println("starting act for result");
            MainActivity.this.startActivityForResult(
                    Intent.createChooser(i, "Image Browser"),
                    FILECHOOSER_RESULTCODE);
        }

        public void openFileChooser(ValueCallback<Uri> uploadMsg,
                String acceptType) {
            mUploadMessage = uploadMsg;
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType("image/*");

            MainActivity.this.startActivityForResult(
                    Intent.createChooser(i, "Choose type of attachment"),
                    FILECHOOSER_RESULTCODE);
        }
    }

@Override
    protected void onActivityResult(int requestCode, int resultCode,
            Intent intent) {
        // TODO Auto-generated method stub
        if (requestCode == FILECHOOSER_RESULTCODE) {
            if (null == mUploadMessage)
                return;
            Uri result = intent == null || resultCode != RESULT_OK ? null
                    : intent.getData();
            mUploadMessage.onReceiveValue(result);
            mUploadMessage = null;
        }
    }

希望它对将来的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多