我的应用程序(Android 4.4.4)中嵌入的webview有问题。在一个页面上有一个“上传图像”按钮,我用openFileChooser管理它。
在某些设备上,当我点击webview中的“上传图像”按钮时,摄像头应用程序启动,我的应用程序被销毁。拍照后,我的应用程序被重新创建,我恢复webview状态(保存在onSaveInstanceState
)并调用onActivityResult()。问题是,包含
ValueCallBack
的变量mUploadMessage
为空,因此我无法调用ValueCallBack。onReceiveValue()
为webview提供图像URI。
// openFileChooser for Android 3.0+ to 4.4
// WARNING: the openFileChooser works in version 4.4 only for 4.4.3+
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
// Update message
mUploadMessage = uploadMsg;
fileChooserManagement(FILECHOOSER_RESULTCODE);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
webview.saveState(outState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
// Restore last state
webview.restoreState(savedInstanceState);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// Do not test the resultCode, because it's mandatory to enter the 'if' and to call the
// onReceiveValue even with null. Otherwise the openFileChooser will not be called anymore.
if (requestCode == FILECHOOSER_RESULTCODE) {
if (this.mUploadMessage == null) {
Log.i("myApp", "onActivityResult mUploadMessage is null");
return;
}
mUploadMessage.onReceiveValue(processPicture(resultCode, data));
mUploadMessage = null;
}
}
这里也有类似的主题,但是问题“我不明白如何保存webview状态并恢复它。如果我在onRestoreInstanceState()中恢复它,页面不会从相机中拍摄照片...你能给我一个例子吗?”没有答案。
谢谢你们的帮助!
我知道您没有在代码的任何地方实现webview客户端。您需要同时实现webview和使用WebChrome客户端类来处理android应用程序上的文件上传。此外,还应该覆盖url加载。此外,您需要添加访问internet的权限和从外部存储器读取的权限。你可以在这里阅读更多内容并下载演示。我希望你有所帮助
嘿,谢谢你抽出时间。在我的页面中,我的应用程序的webview中加载的是照片上传: 它上传一张照片,如果你通常图片你的画廊等... 如果我点击这个输入,我可以选择一张图片,然后网站检测到更改(js:onchange)。我已经尝试了一些东西,但在我选择它之后它不会上传图片。下面是我对imgupload的编码: 我希望你能帮忙,祝你今天过得愉快
此应用程序中的WebView会打开一个带有上载按钮的页面。 下面是一个代码块,可以打开一个对话框从gallery或camera上传图像。 在我的活动中,我有: 在onCreate中,我有以下内容: 文件浏览器和图库正在按预期工作。问题是,当我用相机拍照时,它没有上载到“选择文件”选项中,该选项显示状态“未选择文件”。 选择相机时: 使用相机拍摄快照:出现返回和检查选项。 关于选择检查标记: 文件未
我正在尝试使用webview上传图像。一切正常,如预期的那样,但只有图像没有上传,当照片从相机中点击时。请帮我找到这个。我得到了一些答案,但没有帮助或没有回答,就像这个没有回答一样,这对我没有帮助,这是直接打开画廊,不适用于相机,这个没有帮助我 这是我的活动代码
我正在尝试通过ACTION\u SEND intent将文件上载到webview应用程序。如果他们选择在应用程序中使用openFileChooser上传文件,我已经可以使用它了,但我需要它在他们单击文档或画廊应用程序中的共享时工作。所以,我非常需要绕过openFileChooser,因为已经选择的文件及其Uri在我的意图中,我只需要实际上传它。我想重蹈openFileChooser的覆辙,但不知道
可能的重复: 这个
这里的代码在插件中正常工作,但我无法将类似于的结果转换为一个可以在php脚本中使用的图像。任何帮助都会很好。谢谢!