Цель: уметь прикреплять файл любого типа к <input type="file" />
в webview
в Android 4.1+
. (Android 5+ в порядке)
Я установил openFileChooser
, как я понял, в соответствии с несколькими примерами, которые я нашел. Он работает на 4.1
, но не на 4.4.4
, где прикрепленные файлы не имеют корректно установленного имени файла.
Вместо этого в качестве имени файла будет указан последний путь возврата intent.mData
к onActivityResult
,.eg, для значения mData
content://com.android.providers.downloads.documents/document/2
, имя файла будет 2
- без расширения курса - в то время как имя должно be image.png
.
Что я могу сделать, чтобы исправить это? Были ли проблемы в моем коде?
Я тестирую эмулятор: Galaxy Nexus, API 19, цель: По умолчанию | См. Код ниже.
webView.setWebChromeClient(new WebChromeClient() {
public void openFileChooser(ValueCallback<Uri> valueCallback, String acceptType, String capture) {
if (UseWebViewActivity.this.valueCallback != null) {
UseWebViewActivity.this.valueCallback.onReceiveValue(null);
}
UseWebViewActivity.this.valueCallback = valueCallback;
Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
contentSelectionIntent.setType("*/*");
startActivityForResult(Intent.createChooser(contentSelectionIntent,
getString(R.string.file_chooser_title)), INPUT_FILE_REQUEST_CODE);
}
});
// ...
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == INPUT_FILE_REQUEST_CODE && valueCallback != null) {
Uri result = null;
if (resultCode == Activity.RESULT_OK) {
result = intent.getData();
}
valueCallback.onReceiveValue(result);
valueCallback = null;
}
}