繁体   English   中英

在webview中打开外部浏览器?

[英]Open external browser in webview?

我正在尝试在webview中运行twitter,但是每当我尝试捕获外部链接以打开某些默认浏览器时,都没有反应,就像应用程序停滞了一样。

示例:-如果我单击Twitter webview内的某个博客链接,则不会发生任何事情。

我已经试过了

 private class InsideWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView View, String url) {
        if( url.startsWith("https://mobile.twitter.com") || url.startsWith("https://m.twitter.com") ) {
            MoviesFragment.this.progress.setProgress(0);
            View.loadUrl(url);
            return false;
        }
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity( intent );
        return true;
    }


}

但是没有任何反应,当我尝试捕获日志时,其中没有关于webview的信息,请帮忙。

更新

这次我采用了不同的方法,但结果仍然相同。

这次我创建了一个上下文菜单来捕获HTML链接,然后将它们转移到外部浏览器,但是这次在Twitter中也没有任何反应。 单击弹出框后,似乎没有open in browser

 @Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
    super.onCreateContextMenu(menu, v, menuInfo);

    WebView w = (WebView)v;
    WebView.HitTestResult result = w.getHitTestResult();
    if(result.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
        menu.addSubMenu(0, 0, 0, "open in browser");
    }
}

@Override
public boolean onContextItemSelected(MenuItem item){
 if (item.getTitle()=="open in browser") {//open the actual page into using the browser
        myWebView.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(myWebView.getUrl())));
    }
    return true;
}

解决了

问题是字符串URL正在捕获新URL,这就是为什么open in browser触发open in browser后仅打开主页的原因。

实现了HitTestResult ,这真是小菜一碟。

private String url = "";




 protected void onCreate(Bundle savedInstanceState) {
.........................................
.......................................
............................
}


@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
    super.onCreateContextMenu(menu, v, menuInfo);

    WebView w = (WebView)v;
    WebView.HitTestResult result = w.getHitTestResult();


    if(result.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE)
    {
        menu.addSubMenu(4, 4, 4, "Open in browser");
        url = result.getExtra();

    }

}

@Override
public boolean onContextItemSelected(MenuItem item){
    if (item.getTitle()=="Open in browser"){

        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(browserIntent);
    }

    return true;
}

我希望有人会觉得有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM