さて、ガジョトレスは私の質問に答えていましたが、うまくいかなかったので、彼はその答えを削除しました. しかし、彼は私の問題を解決するのに役立つリンクを回答に提供していました。将来他の誰かに役立つことを期待して、質問に答えています。
そのチュートリアルでは、最後のコメントに実用的な例が含まれています。この例では、<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;
}
}
将来誰かに役立つことを願っています。