我尝试了多种技巧,终于找到了解决办法。
所有这些方法调用后,FileUpload元素都需要一个“ValueCallback”。所以“onActivityResult”必须返回一个结果给fileupload元素。但是,当用户取消警告对话框时,不能调用“onActivityResult”方法。这会导致fileupload元素产生错误。
我补充说:“setOnCancelListener”我警告对话框是这样的:
.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
mUploadMessage.onReceiveValue(null);
mUploadMessage = null;
}
})
你必须为了保持操作至少返回“空”的文件上传元素。否则fileupload停滞,这会导致所有的javascript停滞。
我也逮住,使得文件上传失速另一种情况:
- 在文件上传元素
在用户水龙头 - 选择一个选项(凸轮或Galller无所谓)
- 凸轮或画廊出现并且用户按下“返回”按钮
这会返回一个RESULT_CANCELED代码为“onActivityResult”的方法,你必须处理这样的:
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
try {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK
&& intent != null)
mUploadMessage.onReceiveValue(intent.getData());
else
mUploadMessage.onReceiveValue(null);
} catch (Exception e) {
Log.e("Error", e.getLocalizedMessage());
mUploadMessage.onReceiveValue(null);
} finally {
mUploadMessage = null;
}
}
mUploadMessage是DEF像这样的:
private ValueCallback<Uri> mUploadMessage;