gpt4 book ai didi

android - 为什么在文档中隐藏了 WebChromeClient 中的 openFileChooser?使用这种方法安全吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:30 34 4
gpt4 key购买 nike

在我看到的大多数地方,WebView 中的文件上传功能都是使用 openFileChooser() 方法实现的。使用此方法是否合法/安全?如果我在代码中使用它,我的代码会在任何地方中断吗?如果我使用这种方法,会出现安全问题吗?

为什么android在旧版本中隐藏了这个API?只有在 5.0 或以上他们才引入了 onShowFileChooser() 方法,这意味着他们正式不支持在 5.0 以下的 webviews 中上传文件?

最佳答案

使用旧的 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

您还可以在源代码中查看它是如何完成的:

https://github.com/delight-im/Android-AdvancedWebView/blob/0f06e73ecee13ebc4552ac00bc0848e18662a25d/Source/src/im/delight/android/webview/AdvancedWebView.java#L597

https://github.com/delight-im/Android-AdvancedWebView/blob/0f06e73ecee13ebc4552ac00bc0848e18662a25d/Source/src/im/delight/android/webview/AdvancedWebView.java#L1044

它没有记录在案这一事实仅意味着您不能依赖它。当它在 Android 2.2 中引入时,没有人知道它会在 Android 4.4 中停止工作,但你不得不接受它。

关于android - 为什么在文档中隐藏了 WebChromeClient 中的 openFileChooser?使用这种方法安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30078217/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com