Java 链接正在webview中打开我想在android studio的默认浏览器中打开
我有一个网络视图,我想当有人点击一个链接时,它应该在浏览器中打开,而不是在我的应用程序中。我该怎么做 我想显示第一个网页,但当有人点击它时,它应该在一个新的浏览器中打开,这就是我想要的。我该怎么做 这是我正在使用的代码Java 链接正在webview中打开我想在android studio的默认浏览器中打开,java,android,android-studio,webview,Java,Android,Android Studio,Webview,我有一个网络视图,我想当有人点击一个链接时,它应该在浏览器中打开,而不是在我的应用程序中。我该怎么做 我想显示第一个网页,但当有人点击它时,它应该在一个新的浏览器中打开,这就是我想要的。我该怎么做 这是我正在使用的代码 package com.packagename.weebly.free_recharge_app; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import a
package com.packagename.weebly.free_recharge_app;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class tab2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab2, container, false);
WebView webView = (WebView) view.findViewById(R.id.webview1);
webView.getSettings().setSupportZoom(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(true);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
// Set cache size to 8 mb by default. should be more than enough
webView.getSettings().setAppCacheMaxSize(1024*1024*8);
// This next one is crazy. It's the DEFAULT location for your app's cache
// But it didn't work for me without this line.
// UPDATE: no hardcoded path. Thanks to Kevin Hawkins
// String appCachePath = this.getCacheDir().getAbsolutePath();
// Log.e(TAG, "appCachePath = " + appCachePath);
// webView.getSettings().setAppCachePath(appCachePath);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setJavaScriptEnabled(true);
// Load the URLs inside the WebView, not in the external web browser
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webView.loadUrl("http://google.com");
return view;
}
}
在添加代码@eugene之后
package com.freerechargeapp.weebly.free_recharge_app;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class tab2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab2, container, false);
WebView webView = (WebView) view.findViewById(R.id.webview1);
webView.getSettings().setSupportZoom(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(true);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
// Set cache size to 8 mb by default. should be more than enough
webView.getSettings().setAppCacheMaxSize(1024*1024*8);
// This next one is crazy. It's the DEFAULT location for your app's cache
// But it didn't work for me without this line.
// UPDATE: no hardcoded path. Thanks to Kevin Hawkins
// String appCachePath = this.getCacheDir().getAbsolutePath();
// Log.e(TAG, "appCachePath = " + appCachePath);
// webView.getSettings().setAppCachePath(appCachePath);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setJavaScriptEnabled(true);
// Load the URLs inside the WebView, not in the external web browser
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return false;
}
});
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webView.loadUrl("google.com");
return view;
}
}
只需删除
webView.setWebViewClient(新的WebViewClient())代码>
或者加上这个
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return false;
}
});
1) 在活动中添加一个类
private class AppWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
2) setWebViewClient
与新创建的类。您已经有一个,应该删除并替换为以下内容
webView.setWebViewClient(new AppWebViewClient());
,
当用户在WebView中单击网页链接时,默认行为是Android启动一个处理URL的应用程序。通常,默认web浏览器会打开并加载目标URL。
默认行为是,当在WebView中单击链接时,android将以Intent.ACTION\u视图启动它。通过向WebView提供WebViewClient,可以更改默认行为
只需删除您提供给WebView的WebViewClient,您的应用程序将使用默认流。代码中的注释告诉您,这不会在新链接中打开代码
// Load the URLs inside the WebView, not in the external web browser
webView.setWebViewClient(new WebViewClient());
您需要重写shouldOverrideUrlLoading方法
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return false;
}
});
返回值true表示主机应用程序处理URL,返回false表示当前WebView在删除WebView.setWebViewClient(new WebViewClient())后处理URLHello@eugene代码>它正在打开它在浏览器中打开,在android 4.4中工作,但在lollipop 5.1中,当你点击一个链接它在我的应用程序webView中打开时它不工作。你好@eugene即使添加了此代码它在lollipop上也不工作它在webView中打开我在我的问题中更新了我的代码。你好@Sharj,你能提供一个屏幕截图吗,gif或视频如何做到这一点事实上我是一个新手,我不知道我必须粘贴哪些代码,以及任何截图、gif或视频教程将在何处greati删除webViewClient并在android 4.4中打开浏览器中的URL,但在android 5.1中,它将在我的应用程序webView中打开我还能做什么?