我目前在 google play 和 itunes 上有应用程序,它们是共享 webview 的原生包装器。 webview 的美妙之处在于我可以在 webview 端进行更改,并且它们将立即在任何设备上可见,但是我无法从用户设备上存储的用户相册/画廊上传图像。
使用我当前的 webview 策略,允许用户从他们设备的 native 相册/画廊上传图像的最快实现是什么?
最佳答案
您可以使用标准的文件输入类型:
<form action="/server/upload" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
这应该在 iOS6+ 上开箱即用,并显示 native 打开文件对话框,但您必须在 Android 上进行一些编码。
在较旧的平台上,有一个使用非官方 API (WebChromeClient #openFileChooser
) 的解决方法,但 Google 在 KitKat 中打破了这一点,然后在 Lollipop 中发布了对此功能的官方支持 WebChromeClient.html# onShowFileChooser
。因此,KitKat 可能会继续损坏,但在其他平台上它应该可以正常工作。
请参阅此 Android 错误报告问题 62220 .
您可以自己实现它(查看 this 示例),但如果您正在寻找“正常工作”的 WebView 子类,您可能想尝试 Android-AdvancedWebView项目。
另一种选择,或仅作为 KitKat 设备的修复,是让 native 包装器将文件编码为 Base64 字符串,然后 HTML 应用程序可以将其发送到服务器。
关于android - Webview - 从设备上传图像的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29402732/