Android 如何在内部WebView中默认打开外部url?

Android 如何在内部WebView中默认打开外部url?,android,webview,android-webview,default,Android,Webview,Android Webview,Default,因此,我在Android Studio中有一个WebView应用程序,我希望当我打开一个Url(例如谷歌应用程序)时,它会在我的应用程序中默认打开它。 以下是我代码的一部分: String url = "http://google.com"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.acti

因此,我在Android Studio中有一个WebView应用程序,我希望当我打开一个Url(例如谷歌应用程序)时,它会在我的应用程序中默认打开它。 以下是我代码的一部分:

String url = "http://google.com";

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

myBrowser = (WebView) findViewById(R.id.mybrowser);
    myBrowser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

    myBrowser.getSettings().setJavaScriptEnabled(true);
    myBrowser.getSettings().setBuiltInZoomControls(true);
    myBrowser.setWebViewClient(new WebViewClient());
    myBrowser.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {

            prefs.edit().putString("LastUrl", myBrowser.getUrl().toString()).commit();
            editText.setText(myBrowser.getUrl().toString());
            if (progress < 100 && Pbar.getVisibility() == ProgressBar.GONE) {
                Pbar.setVisibility(ProgressBar.VISIBLE);
            }
            Pbar.setProgress(progress);
            if (progress == 100) {
                Pbar.setVisibility(ProgressBar.GONE);
            }
        }
            public boolean shouldOverrideUrlLoading(WebView view, String URL) {
            if (URL != null && URL.startsWith("http://")) {
                view.getContext().startActivity(
                        new Intent(Intent.ACTION_VIEW, Uri.parse(URL)));
                return true;
            } else {
                return false;
            }
        }
    });
    myBrowser.loadUrl(url);
}
stringurl=”http://google.com";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myBrowser=(WebView)findviewbyd(R.id.myBrowser);
myBrowser.setScrollBarStyle(视图.滚动条\u内部\u覆盖);
myBrowser.getSettings().setJavaScriptEnabled(true);
myBrowser.getSettings().SetBuilTinZoomControl(true);
setWebViewClient(新的WebViewClient());
myBrowser.setWebChromeClient(新WebChromeClient(){
public void onProgressChanged(WebView视图,int-progress){
prefs.edit().putString(“LastUrl”,myBrowser.getUrl().toString()).commit();
editText.setText(myBrowser.getUrl().toString());
if(进度<100&&Pbar.getVisibility()==ProgressBar.GONE){
Pbar.setVisibility(ProgressBar.VISIBLE);
}
Pbar.setProgress(进度);
如果(进度==100){
Pbar.setVisibility(ProgressBar.GONE);
}
}
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串URL){
if(URL!=null&&URL.startsWith(“http://”){
view.getContext().startActivity(
新的意图(Intent.ACTION_视图,Uri.parse(URL));
返回true;
}否则{
返回false;
}
}
});
myBrowser.loadUrl(url);
}

将您的
shouldOverrideUrlLoading()
替换为:

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

@B.Barthel:请随意详细解释“对我不起作用”的含义。我的意思是,它不会在我的应用程序中打开url,它只会打开“使用…打开”选项卡,但我的应用程序没有列出…。@B.Barthel:并非所有情况都由
shouldOverrideUrlLoading()处理。
。这主要适用于服务器发出服务器端重定向或用户单击普通链接的情况。如果网站正在做其他事情(例如,用Javascript打开URL),
shouldOverrideUrlLoading()
将不会被调用。如果我想从谷歌应用程序打开它(本例中涉及Javascript吗?)@B.Barthel:如果我不得不猜测,你将不得不重写网页。你需要找到一些开源的Web浏览器,它们使用<代码> WebVIEW/COD>作为它们的基础,看看它们是如何处理的。