これらは私が集めたWebviewに関する知識で、仕事で使っているものもあれば、まだ使っていないものもあり、自分の役に立つことを願って統一してまとめてみました。そしてみんな。また、どなたでも追記していただければ幸いです(もちろん間違いがあれば修正してください、よろしくお願いします)。
詳細については公式ドキュメントを参照してください:)
2. Webview オブジェクトを作成します
3. Web ページをロードする方法
String summary = "<html><body>You scored <b>192</b> points.</body></html>"; webview.loadData(summary, "text/html", null);
Uri uri = Uri.parse("http://www.jianshu.com/"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
webView.clearHistory();webView.clearCache(true);webView.clearFormData();webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);// 隐藏滚动条webView.requestFocus();webView.requestFocusFromTouch();
公式ドキュメント
WebSettings mWebSettings = webView.getSettings();mWebSettings.setJavaScriptEnabled(true);// 支持JSmWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);//支持通过js打开新的窗口mWebSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);//提高渲染等级mWebSettings.setBuiltInZoomControls(false);// 设置支持缩放mWebSettings.setDomStorageEnabled(true);//使用localStorage则必须打开mWebSettings.setBlockNetworkImage(true);// 首先阻塞图片,让图片不显示mWebSettings.setBlockNetworkImage(false);// 页面加载好以后,在放开图片:mWebSettings.setSupportMultipleWindows(false);// 设置同一个界面mWebSettings.setBlockNetworkImage(false);mWebSettings.setCacheMode(1);mWebSettings.setNeedInitialFocus(false);// 禁止webview上面控件获取焦点(黄色边框)
公式ドキュメント
webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { //页面开始加载时 super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { //页面加载结束时 super.onPageFinished(view, url); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); // 这里进行无网络或错误处理,具体可以根据errorCode的值进行判断, } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); /** * 网页跳转: * 1.在当前的webview跳转到新连接 * view.loadUrl(url); * 2.调用系统浏览器跳转到新网页 * Intent i = new Intent(Intent.ACTION_VIEW); * i.setData(Uri.parse(url)); * startActivity(i); */ return true; }});
webView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { // 获得网页的加载进度 newProgress为当前加载百分比 super.onProgressChanged(view, newProgress); } @Override public void onReceivedTitle(WebView view, String title) { // 获取网页的title,客户端可以在这里动态修改页面的title // 另外,当加载错误时title为“找不到该网页” super.onReceivedTitle(view, title); }});
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JSInterface(), "jsInterface"); JSInterface对象:public class JSInterface { @JavascriptInterface public void methodA() { } @JavascriptInterface public void methodB(String webMessage) { }}
注: 1.JavascriptInterface は、バージョン 4.2 で Google によって追加された新しいアノテーションです。を避けるためにセキュリティ リスクについては、4.2 より前のシステム バージョンの詳細と適応を参照してください: Android WebView の Js オブジェクト インジェクション脆弱性ソリューションに加えて、オープン ソース プロジェクトのsafe-java-js-webview-bridge が addJavaScriptInterface() を onJsPrompt() に完全に置き換えます。 . 興味のある方はぜひ学んでみてください。 2. JS は Java を呼び出します:
window.js_callback.viewPicOnJavascript($('article img').index(this));
3. クライアントは JS を呼び出します
mWebView.loadUrl("javascript:alert()");
public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event);}
CookieSyncManager.createInstance(this);CookieSyncManager.getInstance().startSync();CookieManager.getInstance().removeSessionCookie();
webView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { return true; }});
webView.getSettings().setSupportZoom(true);webView.getSettings().setBuiltInZoomControls(true);webView.getSettings().setDisplayZoomControls(false);// setDisplayZoomControls是在Android 3.0中新增的API.,调用此方法前需要对系统版本进行判断
if (webView.getContentHeight() * webView.getScale() == (webView.getHeight() + webView.getScrollY())) { // 处于底端}if(webView.getScrollY() == 0){ //处于顶部}des:getScrollY() //方法返回的是当前可见区域的顶端距整个页面顶端的距离,也就是当前内容滚动的距离.getHeight()或者getBottom() //方法都返回当前WebView这个容器的高度getContentHeight()返回的是整个html的高度,但并不等同于当前整个页面的高度,因为WebView有缩放功能,所以当前整个页面的高度实际上应该是原始html的高度再乘上缩放比例
詳しい内容については、私のトピックに注目してください。転載元を明記してください: http://www.jianshu.com/users/c1b4a5542220/latest_articles
ありがとうございます。良い週末をお過ごしください。 !