我正在使用Android Studio处理我的WebVeew。它的工作正常,但我正在寻找一种不在我的浏览器中打开特殊URL的方法。
例如,当我的用户点击webview中的注册链接时,我想用外部浏览器而不是我的应用程序打开这个URL。其他网址仍应在我的WebClient中打开。
我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
wv = (WebView) findViewById(R.id.webView);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
wv.getSettings().setJavaScriptEnabled(true);
wv.setFocusable(true);
wv.setFocusableInTouchMode(true);
// Set Render Priority to High
wv.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
wv.getSettings().setJavaScriptEnabled(true);
wv.setWebViewClient(new HomeActivity.myWebViewClient());
wv.loadUrl(URL);
}
public class myWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
CookieSyncManager.getInstance().sync();
progressBar.setVisibility(View.GONE);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
}
答案 0 :(得分:0)
也许您正在寻找this。
答案 1 :(得分:0)
我找到了解决方案。在这种情况下,我让它在外部浏览器中打开所有网址,除了我的主页" URL"和登录页面。 对于有同样问题的人:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// all links with in ur site will be open inside the webview
//links that start ur domain example(http://www.example.com/)
String URL_LOGIN = "https://kummerchat.com/index.php/information/login4app";
if (url != null && url == URL || url == URL_LOGIN || url.startsWith(URL_LOGIN)){
return false;
}
// all links that points outside the site will be open in a normal android browser
else {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
}