WebChromeClientをTurbolinks Webviewに添付することができます。与えられた例はAPI21 +のためであり、下位APIはwebviewでファイルアップロードボタンをクリックしたときに異なる機能を使用することに注意してください。
あなたのファイルの先頭にこれを追加します。
private ValueCallback<Uri[]> mUploadMessage;
private final static int REQUESTCODE_FILEPICKER = 100; // or any other int
そして、あなたのonCreate()関数にこれを追加します。最後に
TurbolinksSession.getDefault(this).getWebView().setWebChromeClient(new WebChromeClient() {
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> uploadMsg, WebChromeClient.FileChooserParams fileChooserParams) {
if (mUploadMessage != null) {
mUploadMessage.onReceiveValue(null);
}
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("application/pdf");
startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUESTCODE_FILEPICKER);
return true;
}
});
:処理するために、あなたのonActivityResult()関数にこれを追加アップロードファイル:
if (requestCode == REQUESTCODE_FILEPICKER) {
if (data == null) {
mUploadMessage.onReceiveValue(null);
mUploadMessage = null;
return;
}
String dataString = data.getDataString();
if (dataString != null) {
Uri[] results = new Uri[]{Uri.parse(dataString)};
mUploadMessage.onReceiveValue(results);
mUploadMessage = null;
return;
}
mUploadMessage.onReceiveValue(null);
return;
}
希望すると、これはあなたを助けます!
イメージをアップロードする機能を追加するには、i.setTypeを "image/*"に設定する必要があることに注意してください。私の場合、それはpdfファイルを選択するためのファイルピッカーです。 – RuudSchuurmans