我有这个代码,但不是因为它有效,它在webview中保持打开,我想要的是链接不属于我的网站在您的默认浏览器中打开.任何的想法?谢谢
private class CustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.contains("message2space.es.vu")){
view.loadUrl(url);
return true;
}else{
return super.shouldOverrideUrlLoading(view, url);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我试图建立一个custom browser与WebView采用Android API level 10(SDK 2.3.3),不幸的是我不知道如何从拦截请求webpage以打开新的浏览器窗口的URL,像与链接水龙头target="_blank".
在与符合API Doc我已经覆盖了onCreateWindow的WebChromeClient,但是当这样的链接被点击不叫.可能是这个API级别的错误?我还要shouldOverrideUrlLoading完全避免WebView在内置浏览器中打开后续链接.
这是我打开的示例代码google.com.要测试它,请点按"新闻",然后点按任何新闻标题.Android内置浏览器通常以新的方式打开它browser window.
package com.myexample;
import android.app.Activity;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class HelloAndroidActivity extends Activity {
private static String TAG = "WebViewTest";
private WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate");
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.mywebview); …Run Code Online (Sandbox Code Playgroud) 我有一个混合应用程序,它使用WebView从我自己的网站呈现外部HTML.它有一个问题,如果点击了任何链接,它就会启动一个浏览器窗口.我发现这段代码可以帮助我解决它的问题:
myWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
但现在问题是我希望它不适用于其中包含target = _blank的链接.因此,在使用target = _blank的链接应该在新的浏览器窗口中打开时,任何普通链接仍然在WebView中打开.
我们能做到这一点吗?
谢谢
我想打开外部链接并
target =“空白”
我的WebView应用程序中的链接(如GMail应用程序)在新的可关闭窗口中。
我尝试执行与此处提到的相同的操作:
Android-使用外部浏览器在WebView中打开目标_blank链接
和
在Android WebView中处理外部链接(例如Gmail应用程序)
但这不起作用。
请帮助我在我的应用程序中实现此功能。
这是MainActivity.java文件:
package com.blogmaza;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.os.Message;
import android.os.Parcelable;
import android.provider.MediaStore;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import static com.blogmaza.R.id.webView;
public class MainActivity extends AppCompatActivity {
private …Run Code Online (Sandbox Code Playgroud) 解决了
把它放在oncreate中:奇怪的是只会在"android浏览器"中打开
//webview settings
myWebView = (WebView) findViewById(R.id.calwebview);
myWebView.setBackgroundColor(Color.BLACK);
myWebView.setWebViewClient(new MyWebViewClient());
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportMultipleWindows(true);
myWebView.loadUrl("www.google.com");
myWebView.setWebChromeClient(new WebChromeClient() {
@Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg)
{
WebView newWebView = new WebView(view.getContext());
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
return true;
}
});
Run Code Online (Sandbox Code Playgroud) 我试图覆盖默认的WebChromeClient,以便让我的应用程序的WebView能够打开新窗口.为此,按照手册中的说明,我将覆盖WebChromeClient的'onCreateWindow'方法,其中我执行以下简单逻辑.
public boolean onCreateWindow (WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
((WebView.WebViewTransport) resultMsg.obj).setWebView(myWebView);
Log.d("webviewdemo", "from the chrome client");
resultMsg.sendToTarget();
return true;
}
Run Code Online (Sandbox Code Playgroud)
但这导致上述分段错误.我做了一些搜索,发现它已在http://code.google.com/p/android/issues/detail?id=11655上报告.之后我没有看到该问题的任何更新.有人知道相同的状态吗?
谢谢,阿肖克.