我看到的大多数地方,WebView
中的文件上传功能都是使用openFileChooser()
方法实现的。使用这种方法是合法/安全的吗?如果我在代码中使用它,我的代码会在任何地方破坏吗?如果我使用这种方法会出现任何安全问题吗?
为什么android会在旧版本中隐藏此API?只有在/ 5.0以上他们引入了onShowFileChooser()方法,这意味着他们在5.0以下的网页浏览中不支持文件上传?
答案 0 :(得分:14)
使用旧的openFileChooser(...)
回调不会产生任何安全隐患。没关系。唯一的缺点是它不会在某些平台级别调用,因此无法工作。
void openFileChooser(ValueCallback<Uri> uploadMsg)
适用于Android 2.2(API级别8),最高级别为Android 2.3(API级别10)openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType)
适用于Android 3.0(API级别11),最高可达Android 4.0(API级别15)openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture)
适用于Android 4.1(API级别16),最高级别为Android 4.3(API级别18)onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
适用于Android 5.0(API级别21)及以上您可以使用一个抽象出来的库,并在不同的平台级别上处理所有这些回调,以便它可以正常工作。例如:
https://github.com/delight-im/Android-AdvancedWebView
您还可以查看源代码的完成情况:
它没有文件证明只是意味着你不能依赖它。当它在Android 2.2中引入时,没有人知道它会在Android 4.4中停止工作,但你不得不接受它。
答案 1 :(得分:0)
由于WebChromeClient未记录,否,因此它不是安全的API,但是是合法的。
但你仍然可以使用它。确保捕获任何错误。但这个过程不能保证有效。