gpt4 book ai didi

android - 在 React native WebView 中禁用下载

转载 作者:行者123 更新时间:2023-12-04 23:54:22 28 4
gpt4 key购买 nike

我在我的应用程序中使用 React Native WebView。我想禁用文件下载。大多只是文件。我无法禁用存储权限,因为应用程序中的某些功能需要此功能。

最佳答案

不幸的是,没有简单的设置。但至少有一种解决方法相当简单。

实现 onShouldStartLoadWithRequest处理程序。如果您返回 false从此处理程序中,WebView 将不会加载 URL。然后,您可以决定是否需要一个简单的实现来查找“类似文件的 URL”或做一些更聪明的事情。一个非常幼稚的实现:

<WebView
ref={r => this._webView = r}
source={{ uri }}
onShouldStartLoadWithRequest={this.checkLoadRequest}
onNavigationStateChange={this.checkLoadRequest}
/>

...
checkLoadRequest(navigator) {
const url = navigator.url.toLowerCase();

// VERY naive implementation but might be all you wanted
if (url.indexOf('.pdf') > -1 || url.indexOf('.doc') > -1) {
// On iOS we just return false.
// Android requires us to call stopLoading().
this._webView.stopLoading();
return false;
}

return true;
}

对于更复杂的实现选项,您可以使用正则表达式来检测您想要阻止的更多文件扩展模式。

请注意,此处理程序不能是异步的并且不能跨平台正常工作。如果你想做一些更复杂的事情(例如,在幕后向 URL 发出 HEAD 请求以查看它会发回的内容),你可以阻止/拒绝所有请求,施展你的魔法,然后以编程方式告诉如果没问题,webview 导航到 URL。在大多数情况下,它会使导航变得非常缓慢,但非常准确。

关于android - 在 React native WebView 中禁用下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60144154/

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