【问题标题】:Android WebView when I click on a link it opens in a browser instead of in the app [duplicate]Android WebView 当我单击它在浏览器中而不是在应用程序中打开的链接时[重复]
【发布时间】:2015-11-25 02:02:37
【问题描述】:

Activity.java 代码:

package net.pocketcraftgaming.pocketcraftgaming;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.view.Menu;
import android.view.MenuItem;

public class WebMainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web_main);

    String url ="http://www.pocketcraftgaming.net/";
    WebView view =(WebView) this.findViewById(R.id.webView);
    view.getSettings().setJavaScriptEnabled(true);
    view.loadUrl(url);
}
}

如果我需要显示我的 AndroidManifest.xml 或 activity.xml,请告诉我 请尽快回复!

【问题讨论】:

  • 那里的第二个答案,按票数排序,是你想要的。
  • 你必须实现WebView的shouldOverrideURLLoading方法

标签: android


【解决方案1】:

如果你不只绑定 webview,你可以看看这个。 Chrome Custom Tab

Here你可以找到更多关于Custom Tab的信息。

【讨论】:

  • 我只需要某种类型的代码使其无法在 chrome 中打开
  • @PocketCraftGaming 您是否有所有这些链接的特定主机,或者这些链接来自不同的主机?是的,您必须扩展 WebClient 类,然后将其设置为您的网络视图。
  • 老实说,我喜欢自定义标签的东西,我会研究一下
  • @PocketCraftGaming 是的,它在速度上比 webview 好一点。如果您觉得它有用,那么就给我的答案投票或标记为正确,无论您认为合适。
【解决方案2】:

您必须设置 WebViewClient 。添加这个:

this.mWebView.setWebViewClient(new WebViewClient(){

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){
      view.loadUrl(url);
      return true;
    }
});

【讨论】:

  • 我在哪里添加这个?
  • 在你的view.loadUrl(url);之后
  • 没关系,我修好了,工作!
  • boolean shouldOverrideUrlLoading(WebView view, String url) 现在已弃用,我得到的 url 是“re-state://”,你能帮忙吗?谢谢
【解决方案3】:

试试这个方法。 把它放在 oncreate 方法中。

String URL ="http://www.pocketcraftgaming.net/";
    if (URL.startsWith("http://")) {
    } else {
        URL = "http://" + getIntent().getStringExtra("WebUrl").trim();
    }
    // this is method.
    LoadURLinWebView(URL);

这是加载 URL 方法。

private void LoadURLinWebView(String uRL2) {
    // TODO Auto-generated method stub
    WebView Wv_onlywebview =(WebView) this.findViewById(R.id.Wv_onlywebview);
    Wv_onlywebview.getSettings().setJavaScriptEnabled(true);
    Wv_onlywebview.setWebChromeClient(new WebChromeClient());
    Wv_onlywebview.setWebViewClient(new WebViewClient() {
        ProgressDialog progressDialog;

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        // Show loader on url load
        public void onLoadResource(WebView view, String url) {
            if (progressDialog == null) {
                progressDialog = new ProgressDialog(
                        Webview_Only_Activity.this);
                progressDialog.show();
            } else {
                progressDialog.dismiss();
            }
        }

        public void onPageFinished(WebView view, String url) {
            if (progressDialog.isShowing()) {
                progressDialog.dismiss();
                progressDialog = null;
            }
        }
    });
    Wv_onlywebview.loadUrl(uRL2);
}

【讨论】:

  • 它工作正常。感谢您与我们分享!
【解决方案4】:

试试这个

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);

【讨论】:

    猜你喜欢
    • 2014-01-04
    • 2020-10-25
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    相关资源
    最近更新 更多