0

Filejquery mobile 1.2.0 でデフォルト コントロールを使用しています。ブラウザで正常に動作しています。しかし、デバイスでは機能しません。Samsung 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の問題ですか? もしそうなら、これに対する回避策を提案できますか?

どんな助けでも大歓迎です。

PS: Android WebView でこれを使用しています。(フォンギャップではありません。)

4

1 に答える 1

1

さて、ガジョトレスは私の質問に答えていましたが、うまくいかなかったので、彼はその答えを削除しました. しかし、彼は私の問題を解決するのに役立つリンクを回答に提供していました。将来他の誰かに役立つことを期待して、質問に答えています。

そのチュートリアルでは、最後のコメントに実用的な例が含まれています。この例では、<3.x と >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;
        }
    }

将来誰かに役立つことを願っています。

于 2013-04-18T09:13:44.000 に答える