我在我的应用程序中使用 Web 视图,一切对我来说都很好,但我遇到了小问题。当 Url 包含免责声明时,我不应该允许 web 视图应该是可点击的。但在所有其他情况下,网络视图应该是可点击的。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.contains("Disclaimers")){
view.setClickable(false);
//Here clickable should be fasle.
return true;
}else{
// In this clickable should be true.
view.setClickable(true);
if(!url.contains("/Home.mvc/Trade")){
showProgressLayout();
}
if(url.contains("/Home.mvc/Trade")){
openTradeScreen(url);
}else{
view.loadUrl(url);
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud) public class MainActivity extends AppCompatActivity {
String url = "https://www.pinterest.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, final String url) {
}
});
webView.loadUrl(url);
}
}
Run Code Online (Sandbox Code Playgroud)
Web View 未在应用程序中加载“ https://www.pinterest.com ”,但它正在使用意图与 chrome 浏览器一起工作。我尝试了其他网址,它正在工作。使用 webview加载“ https://www.pinterest.com ”时,获得如下输出屏幕

现在,当我按下一个特定按钮时,它启动了一个打开webView的网页的意图,而是打开一个浏览器应用程序,显示不是我想要的地址栏.
经过一些研究后我发现我可以使用shouldOverrideUrlLoading()方法来阻止这种情况发生,只是在webView中打开页面,但我不知道如何在我的代码中实现这个方法,非常感谢帮助!
这就是我在打开网页的课程中所拥有的:
public class Codes extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.codes);
View titleView = getWindow().findViewById(android.R.id.title);
if (titleView != null) {
ViewParent parent = titleView.getParent();
if (parent != null && (parent instanceof View)) {
View parentView = (View)parent;
parentView.setBackgroundColor(Color.rgb(228, 108, 10));
}
}
WebView codes = (WebView)findViewById(R.id.codesWebView);
codes.getSettings().setJavaScriptEnabled(true);
codes.loadUrl("http://dev10.affirmaconsulting.com:24009/keyentry");
shouldOverrideUrlLoading(codes, "http://dev10.affirmaconsulting.com:24009/keyentry");
}
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,用于webview加载某些网站。我还定制了actionbar网站导航button。这是我的布局的视图:

当我加载网站时,我的所有三个按钮都是可见的,但我希望它们仅在用户单击某个 URL 时才可见,以便用户轻松理解这些按钮的用途。
我已将所有功能添加到这些按钮中。这是我的代码:
website_back = (ImageButton) cView.findViewById(R.id.website_back);
website_forward = (ImageButton) cView.findViewById(R.id.website_forward);
website_refresh = (ImageButton) cView.findViewById(R.id.website_refresh);
if (v.getId() == R.id.website_back) {
webview.goBack();
}
if (v.getId() == R.id.website_forward) {
webview.goForward();
}
if (v.getId() == R.id.website_refresh) {
webview.reload();
}
Run Code Online (Sandbox Code Playgroud)
我的网络视图客户端:
private class HelloWebViewClient extends WebViewClient {
public void onPageStarted(WebView view, String url, Bitmap favicon) {
progress.setVisibility(View.VISIBLE);
super.onPageStarted(view, url, favicon);
}
public void onPageFinished(WebView view, String url) {
progress.setVisibility(View.GONE);
super.onPageFinished(view, url);
}
public boolean shouldOverrideUrlLoading(WebView view, …Run Code Online (Sandbox Code Playgroud) 我有一个使用 webview 的应用程序,webview 里面有一个地图,我让它可以让用户使用以下代码自动找到用户位置:
清单文件权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
网页视图活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_layout);
WebViewSettings();
LoadWebPage(urlString);
}
Run Code Online (Sandbox Code Playgroud)
网页视图设置:
@SuppressLint("SetJavaScriptEnabled")
public void WebViewSettings(){
webView = (WebView) findViewById(R.id.webview);
webView.canGoBack();
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.setWebViewClient(new WebViewClientSetup());
webView.setWebChromeClient(new GeoWebChromeClient());
webView.getSettings().setGeolocationEnabled(true);
myTimer = new Timer();
//Start this timer when you create you task
myTimer.schedule(new loaderTask(), 20000);
}
Run Code Online (Sandbox Code Playgroud)
WebView客户端:
public class WebViewClientSetup extends WebViewClient {
@Override
public …Run Code Online (Sandbox Code Playgroud) 我有一个WebView在其中加载网页的程序。在此网页中用户需要执行一些操作。当用户到达特定网页时需要执行特定操作。此操作应该自动执行。
如何连续检查 WebView 中的当前 URL 并将操作连接到特定条件?
示例代码是:
String url = wv.getUrl();
if (url.contains("string"))
{
code = url.substring(url.lastIndexOf("value=") + 6);
dialog.dismiss(); //action
}
Run Code Online (Sandbox Code Playgroud)
但是,我可以将其放在哪里,以便它不断检查WebView? 任何帮助表示赞赏。
android webview webviewclient webchromeclient android-studio
我有一个WebView,可以很好地加载URL.我已经获得了一个WebViewClient并扩展了onProgressChanged,但据我所知,它没有被调用.有任何想法吗?
wv.setWebViewClient(new WebViewClient(){
public void onProgressChanged(final WebView view, final int newProgress) {
Log.e("APPNAME", String.valueOf(newProgress));
if (newProgress < 100 && progressBar.getVisibility() == ProgressBar.GONE){
progressBar.setVisibility(ProgressBar.VISIBLE);
}
progressBar.setProgress(newProgress);
progressTxt.setText(newProgress);
if (newProgress == 100){
progressBar.setVisibility(ProgressBar.GONE);
}
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){
InputStream is = null;
byte[] buffer = null;
try {
is = getAssets().open("error.html");
int size = 0;
size = is.available();
buffer = new byte[size];
is.read(buffer);
is.close();
}
catch(Exception e){
}
String str = new String(buffer);
str = …Run Code Online (Sandbox Code Playgroud) 我想WebView通过操作一些 DOM 元素来显示一个网站。我的意思是,我想删除一个特殊的 div 元素或用某些东西替换它。为此,我做了这样的事情:为了替换我使用这个模型的东西
document.getElementById("demo").innerHTML = "Hello World!";
Run Code Online (Sandbox Code Playgroud)
我将它应用到 Android 上WebView是这样的:
public class WebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, final String url) {
view.loadUrl("javascript:document.getElementById(\"jumbotron-company\").innerHTML = \"\";");
}
}
Run Code Online (Sandbox Code Playgroud)
它可以在我的 API 为 18 的设备上工作,但不能在 API 大于 18 的模拟器或设备上工作
我正在使用WebViewClient加载网页,我想显示我的代码的进度条.我的代码没有逐渐加载进度.它只显示100%的进展.如何根据网页加载时间设置进度?
出于我的目的,我只需在WebView上加载" https://www.google.com ".请帮忙.谢谢.代码如下所示:
活动文件
public class MainActivity extends Activity {
private WebView webView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int vc = Color.parseColor("#feca01");
progressBar = (ProgressBar) findViewById(R.id.determinateBar);
progressBar.getProgressDrawable().setColorFilter(
vc, android.graphics.PorterDuff.Mode.SRC_IN);
webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new MyBrowser());
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://deelay.me/5000/http://www.google.com");
}
private class MyBrowser extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
progressBar.incrementProgressBy(10);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override …Run Code Online (Sandbox Code Playgroud)