我正在尝试在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;
}
答案 0 :(得分:0)
<强>解决强>
问题是String URL正在捕获新的URL,这就是为什么在触发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;
}
我希望有人会发现它很有用。