有时无法在 Web 视图客户端上重新加载自定义 URL



我在网络视图中使用URL,当我单击链接时,它应该将其定向到自定义URL,例如 paynow://xxxxx。 当我使用 webview 客户端时,它有时会出现,有时不会重定向。 我的代码有什么错误吗? 请检查页面上的网址已开始,应该覆盖网址加载

protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=this;
MainApplication.getComponent(this).inject(this);
back=findViewById(R.id.back_w);
front=findViewById(R.id.right_w);
wv1=(WebView)findViewById(R.id.webview);
wv1.getSettings().setLoadsImagesAutomatically(true);
wv1.getSettings().setJavaScriptEnabled(true);
wv1.setWebViewClient(new MyBrowser());
wv1.setWebChromeClient(new WebChromeClient());
wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv1.loadUrl(Constants.Load_url);
}
private class MyBrowser extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

final Uri uri = request.getUrl();
return super.shouldOverrideUrlLoading(view, uri.toString());
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
if (url.startsWith("paynow://"))
{
if (url.contains("order"))
{
startActivityForResult(new Intent(context,TipsActivity.class).putExtra("url",url),1);
}
}
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
wv1.setVisibility(View.GONE);
}

}

答:WebView 正在阻止重定向到自定义 URL 的弹出窗口 通过添加它wv1.getSettings().setPluginState(WebSettings.PluginState.ON);它的工作原理

您需要将逻辑移动到onPageStartedshouldOverrideUrlLoading函数。

WebView 通过添加它的工作wv1.getSettings().setPluginState(WebSettings.PluginState.ON);阻止重定向到自定义 URL 的弹出窗口

最新更新