gpt4 book ai didi

android - 防止 WebView 在 Android 中加载 URL(React Native)

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:59:14 48 4
gpt4 key购买 nike

目前,OnShouldStartLoadWithRequest仅在 iOS 上受支持。 A PR to add support for this on Android关门了。如果 Android 上的 WebView 尝试打开自定义 URL 方案,the app will crash -- 这也导致我的应用程序崩溃。

我正在开发的应用程序需要拦截试图打开自定义 URL 方案的 WebView,并在打开该 URL 之前取消它(在 iOS 上,返回 false on OnShouldStartLoadWithRequest 是做到这一点的好方法)。

在 Android 上执行此操作的最佳方法是什么?

我希望这段代码能够工作:

        <WebView
ref={WEBVIEW_REF}
source={{uri: INITIAL_URI}}
onShouldStartLoadWithRequest={this.onShouldStartLoadWithRequest}
style={{width, height: height - navBarHeight, backgroundColor: "#fff"}}
/>

 onShouldStartLoadWithRequest(navigator) {
if (navigator.url.indexOf(INTERCEPT_URL) === -1) {
return true;
}
return false;
}

我个人对几乎任何有效的东西都没有意见——包括手动修改 ReactWebViewManager.java。我只需要把它拿出来。

最佳答案

您可以使用 onNavigationStateChange属性,它将获得与您在函数中获得的相同的 navigator 对象 onShouldStartLoadWithRequest .

 <WebView
ref={WEBVIEW_REF}
source={{uri: INITIAL_URI}}
onShouldStartLoadWithRequest={this.onShouldStartLoadWithRequest} //for iOS
onNavigationStateChange ={this.onShouldStartLoadWithRequest} //for Android

style={{width, height: height - navBarHeight, backgroundColor: "#fff"}}
/>

然后在函数中

onShouldStartLoadWithRequest(navigator) {
if (navigator.url.indexOf(INTERCEPT_URL) === -1) {
return true;
} else {
this.refs[WEBVIEW_REF].stopLoading(); //Some reference to your WebView to make it stop loading that URL
return false;
}
}

我和你有同样的需求,我就是这样解决的。

关于android - 防止 WebView 在 Android 中加载 URL(React Native),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39682445/

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