Har*_*rry 20 android webchromeclient
我搜索并阅读了很多帖子,但无法弄清楚如何在我的代码中执行此操作.
我想在我的应用程序中使用地理位置,需要在webChromeClient中查看而不是我现在用于html文件的webViewClient,并且链接确实保留在同一视图中.
当我将其更改为webChromeClient时,html链接<a href="http://url/file.php?q=123"会突然在浏览器中打开!
我怎么能阻止这个?
myWebView = new WebView(this);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setLoadWithOverviewMode(true);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.getSettings().setGeolocationEnabled(true);
myWebView.setWebChromeClient(new WebChromeClient() {
public void onGeolocationPermissionsShowPrompt(String origin, android.webkit.GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false); }
});
myWebView.loadUrl("file:///android_asset/HTML/index.html");
setContentView(myWebView);
Run Code Online (Sandbox Code Playgroud)
Cha*_*ams 65
WebChClClient不包含shouldOverrideUrlLoading方法,WebViewClient也是如此.请记住,如果指定,"WebView"可以同时使用WebViewClient和WebChromeClient.WebViewClient添加了不可用的方法,没有分配客户端(在webview中保持导航).与WebChromeClient相同的是它可以使用的特定方法(例如,在加载时获取页面标题).
所以你可以像这样构建你的代码:
WebView web = (WebView)findViewById(R.id.web);
WebSettings webSettings = web.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setGeolocationEnabled(true);
webSettings.setSupportMultipleWindows(true); // This forces ChromeClient enabled.
web.setWebChromeClient(new WebChromeClient(){
@Override
public void onReceivedTitle(WebView view, String title) {
getWindow().setTitle(title); //Set Activity tile to page title.
}
});
web.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
除了WebChromeClient之外,我还可以通过设置虚拟WebViewClient来解决这个问题.不知道为什么,但是当我拿出这一行时,网页再次开始在浏览器中打开.
mBrowser.setWebViewClient(new WebViewClient());
Run Code Online (Sandbox Code Playgroud)
要在浏览器中打开链接,您可以使用intentinshouldOverrideUrlLoading方法在浏览器中启动 URL,而不是使用 yourwebview来处理链接:
webView.setWebViewClient(new WebViewClient(){
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想在 webview 中加载,请使用:
WebViewClient yourWebClient = new WebViewClient()
{
// Override page so it's load on my view only
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
// This line we let me load only pages with an anchor tag
if ( url.contains("url") == true )
//Load new URL Don't override URL Link
return false;
// Return true to override url loading (In this case do nothing).
return true;
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25331 次 |
| 最近记录: |