我在Web视图中使用URL,当我单击链接时,应将其定向到自定义URL,例如paynow:// xxxxx。 当我使用webview客户端时,它有时会出现,并且有时不会重定向。 我的代码有什么错误吗? 请检查网址onPageStarted和shouldOverrideUrlLoading
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阻止弹出窗口重定向到自定义网址
通过添加wv1.getSettings().setPluginState(WebSettings.PluginState.ON);
可以有效
答案 0 :(得分:1)
您需要将onPageStarted
中的逻辑移至shouldOverrideUrlLoading
函数中。
答案 1 :(得分:0)
WebView通过添加有效的wv1.getSettings().setPluginState(WebSettings.PluginState.ON);
来阻止重定向到自定义网址的弹出窗口