Webapp视图在浏览器中打开链接

时间:2017-10-18 14:00:19

标签: android webview

我对编码非常陌生,并遵循创建webview应用程序的指南。 它显示主页完全正常,直到您点击任何内容并打开浏览器,但应保留在webview应用程序中。

我尝试关注其他一些帖子(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 个答案:

答案 0 :(得分:0)

您可以使用:

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,而不是将其加载到webview中

答案 1 :(得分:-1)

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 
    } 
});