Webapp查看浏览器中的打开链接

问题描述:

我对编码非常陌生,并遵循了创建webview应用程序的指南。 它显示的网页完全正常,直到你点击任何东西,它打开浏览器,但应保持在webview应用程序。Webapp查看浏览器中的打开链接

我试图关注其他一些帖子(How can I force a webview app to open links in it instead of open them in the default android browser depending on the domain?),但Webviewclient,webview,uri,intent和Startactity无法解决符号问题。所以我想,因为教程代码看起来不同,它在代码中有其他限制,或者我需要创建几件事情?这里是我的活动代码(我删除URL名称):

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.ProgressBar; 

public class MainActivity extends Activity { 
    private WebView mWebView; 
    ProgressBar progressBar; 


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

      mWebView = (WebView) findViewById(R.id.activity_main_webview); 

      progressBar = (ProgressBar) findViewById(R.id.progressBar1); 

      WebSettings webSettings = mWebView.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      mWebView.loadUrl("https://www..com"); 

    } 
} 
+2

可能的重复[如何强制webview应用程序打开链接而不是打开它们默认的Android浏览器取决于域?](https://*.com/questions/14633367/how-can-i-force-a-webview-app-to-open-links-in-it-instead-of - 打开他们在这里) – Shark

+0

我试过,但没有工作。 如果我创建WebViewClient类与以下: 公共类MyWebViewClient延伸WebViewClient { @覆盖 公共布尔shouldOverrideUrlLoading(web视图视图,字符串URL){ view.loadUrl(URL); 返回true; } } 活动代码中的哪里必须去? webview.setWebViewClient(new MyWebViewClient()); – Von

mWebview.setWebViewClient(new WebViewClient() { 
    public boolean shouldOverrideUrlLoading(WebView view, String url){ 
     // do your handling codes here, which url is the requested url 
     // probably you need to open that url rather than redirect: 
     view.loadUrl(url); 
     return false; // then it is not handled by default action 
    } 
}); 
+0

从被覆盖的方法返回false –

您可以使用此:

private class MyBrowser extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url.startsWith("mailto:") || url.startsWith("mms:") || url.startsWith("mmsto:") || url.startsWith("market:") || url.startsWith("https://youtu.be/")) { 
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
       startActivity(intent); 
       return true; 
      } else { 
       view.loadUrl(url); 
       return true; 
      } 
     } 
    } 

如果您的链接通过举例:mailto它会打开Gmail应用程序启动。如果您不添加它将不会打开电子邮件地址。如果我还添加了url.startsWith("https://youtu.be/"),如果某些链接链接到YouTube,它将打开Youtube,而不是在web视图中加载它