博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android WebView
阅读量:7121 次
发布时间:2019-06-28

本文共 15126 字,大约阅读时间需要 50 分钟。

PrintWebActivity
package com.zkc.pinter.activity;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Picture;import android.net.wifi.WifiManager;import android.os.Bundle;import android.os.Environment;import android.os.Message;import android.util.Log;import android.view.KeyEvent;import android.view.Menu;import android.view.View;import android.webkit.JavascriptInterface;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import com.example.btpdemo76.R;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.zkc.helper.printer.*;/** * Created by NickChung on 3/20/15. */public class PrintWebActivity extends Activity {    public WebView newWebView = null;    List
> listData = new ArrayList
>(); private long firstTime = 0; private String title; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_print_web); title = getTitle().toString(); final EditText txtUrl = (EditText) findViewById(R.id.txtURL); final WebView mWebView = (WebView) findViewById(R.id.wvSite); final Button btnGo = (Button) findViewById(R.id.btnGo); final Button btnGoBack = (Button) findViewById(R.id.btnGoBack); final Button btnForward = (Button) findViewById(R.id.btnForward); final Button btnReload = (Button) findViewById(R.id.btnReload); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); mWebView.addJavascriptInterface(new WebAppInterface(this), "android"); mWebView.getSettings().setSupportMultipleWindows(true); mWebView.getSettings().setDisplayZoomControls(true); mWebView.getSettings().setBuiltInZoomControls(true); txtUrl.setText("http://www.ri-pai.com/AdminHellToBid/index.php/Index/Index.html"); //txtUrl.setText("http://192.168.0.106/bt.html"); if (!txtUrl.getText().toString().isEmpty()) { mWebView.loadUrl(txtUrl.getText().toString()); } mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器 view.loadUrl(url); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { setTitle(title + "(Loading...)"); super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { setTitle(title + "(100%)"); super.onPageFinished(view, url); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); view.loadDataWithBaseURL("about:blank" , "
访问出错,请检查:
1.WIFI是否已经连接
2.网页地址是否正确
<(^_^)
" , "text/html" , "UTF-8", null); } }); mWebView.setWebChromeClient(new MyWebChromeClient()); /* mWebView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, final int newProgress) { // TODO Auto-generated method stub runOnUiThread(new Runnable() { @Override public void run() { setTitle(title + "(" + String.valueOf(newProgress) + "%)"); } }); } });*/ btnGo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mWebView.loadUrl(txtUrl.getText().toString()); } }); btnGoBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mWebView.goBack(); } }); btnForward.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mWebView.goForward(); } }); btnReload.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mWebView.reload(); } }); //PrintActivity.pl.printText(mWebView.getTitle() + "\r\n"); //PrintActivity.pl.printImage(BitmapFactory.decodeResource(getResources(), R.drawable.demo)); } public boolean dispatchKeyEvent(KeyEvent event) { // TODO Auto-generated method stub if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK) { Intent i = new Intent(Intent.ACTION_MAIN); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addCategory(Intent.CATEGORY_HOME); startActivity(i); return true;//返回true,把事件消费掉,不会继续调用onBackPressed } return super.dispatchKeyEvent(event); } /* @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); Resources res = getResources(); String[] cmdStr = res.getStringArray(R.array.cmd); for (int i = 0; i < cmdStr.length; i++) { String[] cmdArray = cmdStr[i].split(","); if (cmdArray.length == 2) { Map
map = new HashMap
(); map.put("title", cmdArray[0]); map.put("description", cmdArray[1]); menu.add(0, i, i, cmdArray[0]); listData.add(map); } } return true; } @Override public boolean onOptionsItemSelected(android.view.MenuItem item) { Map map = listData.get(item.getItemId()); String cmd = map.get("description").toString(); byte[] bt = PrintCmdActivity.hexStringToBytes(cmd); PrintActivity.pl.write(bt); return false; }*/}
LabelViewActivity
package com.zkc.pinter.activity;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Picture;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import com.example.btpdemo76.R;import com.zkc.helper.printer.PrinterClass;import com.zkc.helper.printer.WebAppInterface;/** * Created by NickChung on 3/25/15. */public class LabelViewActivity extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_label_view);        final WebView mWebView = (WebView) findViewById(R.id.wvLabel);        final Button btnPrint = (Button) findViewById(R.id.btnPrint);        final Button btnCR = (Button) findViewById(R.id.btnCR);        final Button btnBack = (Button) findViewById(R.id.btnBack);        mWebView.getSettings().setJavaScriptEnabled(true);        mWebView.addJavascriptInterface(new WebAppInterface(this), "android");        mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);        mWebView.loadUrl(getIntent().getStringExtra("url"));        mWebView.setWebViewClient(new WebViewClient() {            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                // TODO Auto-generated method stub                //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器                view.loadUrl(url);                return true;            }        });        btnBack.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //Intent it = new Intent(LabelViewActivity.this, PrintWebActivity.class);                //startActivity(it);                LabelViewActivity.this.onBackPressed();            }        });        btnCR.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if(PrintActivity.pl.getState() != PrinterClass.STATE_CONNECTED) {                    Intent intent = new Intent(LabelViewActivity.this, MainActivity.class);                    startActivity(intent);                }                                byte[] bt = PrintCmdActivity.hexStringToBytes("0A");                PrintActivity.pl.write(bt);            }        });        btnPrint.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if(PrintActivity.pl.getState() != PrinterClass.STATE_CONNECTED) {                    Intent intent = new Intent(LabelViewActivity.this, MainActivity.class);                    startActivity(intent);                }                Picture pic = mWebView.capturePicture();                int width = pic.getWidth();                int height = pic.getHeight();                if (width > 0 && height > 0) {                    Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);                    Canvas canvas = new Canvas(bmp);                    pic.draw(canvas);                    try {                        /*                        String fileName = Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".png";                        FileOutputStream fos = new FileOutputStream(fileName);                        if (fos != null) {                            bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);                            fos.close();                        }                        Toast.makeText(getApplicationContext(), "截图成功,文件名是:" + fileName, Toast.LENGTH_SHORT).show();                        */                        PrintActivity.pl.printImage(bmp);                    } catch (Exception e) {                        e.printStackTrace();                    }                }            }        });    }    public boolean dispatchKeyEvent(KeyEvent event) {        // TODO Auto-generated method stub        if (event.getAction() == KeyEvent.ACTION_DOWN                && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {            return true;//返回true,把事件消费掉,不会继续调用onBackPressed        }        return super.dispatchKeyEvent(event);    }}
WebAppInterface
package com.zkc.helper.printer;import android.content.Context;import android.content.Intent;import android.webkit.JavascriptInterface;import android.widget.Toast;import com.zkc.pinter.activity.LabelViewActivity;/** * Created by NickChung on 3/25/15. */public class WebAppInterface {    Context mContext;    /**     * Instantiate the interface and set the context     */    public WebAppInterface(Context c) {        mContext = c;    }    /**     * Show a toast from the web page     */    // 如果target 大于等于API 17,则需要加上如下注解    @JavascriptInterface    public void showWeb(String url) {        Intent intent = new Intent(mContext, LabelViewActivity.class);        intent.putExtra("url", url);        mContext.startActivity(intent);    }}
bt.html
	
MyWebChromeClient
package com.zkc.pinter.activity;import android.app.AlertDialog;import android.app.Dialog;import android.content.DialogInterface;import android.os.Handler;import android.os.Message;import android.view.Display;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import com.example.btpdemo76.R;//****************************************************************************public class MyWebChromeClient extends WebChromeClient {    public WebView newWebView = null;    @Override    public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {        newWebView = new WebView(view.getContext());        view.addView(newWebView);        WebSettings settings = newWebView.getSettings();        settings.setJavaScriptEnabled(true);        //这个setWebViewClient要加上,否则window.open弹出浏览器打开。        newWebView.setWebViewClient(new WebViewClient() {            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                View dlgView = LayoutInflater.from(view.getContext()).inflate(R.layout.popup, null);                WebView wvPop = (WebView) dlgView.findViewById(R.id.wvPop);                wvPop.setWebViewClient(new WebViewClient() {                    @Override                    public boolean shouldOverrideUrlLoading(WebView view, String url) {                        // TODO Auto-generated method stub                        //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器                        view.loadUrl(url);                        return true;                    }                });                wvPop.loadUrl(url);                final AlertDialog dlg = new AlertDialog.Builder(view.getContext())                        .setIcon(R.drawable.ic_launcher)                        .setTitle(view.getTitle())                        .setView(dlgView)                        .setPositiveButton("返回",null)                        .create();                /*                Button btnExit = (Button) dlgView.findViewById(R.id.btnExit);                btnExit.setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        dlg.cancel();                    }                });*/                dlg.show();                Window win = dlg.getWindow();                win.getDecorView().setPadding(0, 0, 0, 0);                WindowManager.LayoutParams lp = win.getAttributes();                lp.width = WindowManager.LayoutParams.MATCH_PARENT;                lp.height = WindowManager.LayoutParams.WRAP_CONTENT;                win.setAttributes(lp);                return true;            }        });        newWebView.setWebChromeClient(this);        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;        transport.setWebView(newWebView);        resultMsg.sendToTarget();        return true;    }    @Override    public void onCloseWindow(WebView view) {        if (newWebView != null) {            newWebView.setVisibility(View.GONE);            view.removeView(newWebView);        }    }}

 Ref:

 Ref:

转载于:https://www.cnblogs.com/ncore/p/4366698.html

你可能感兴趣的文章
webpack4.0学习
查看>>
Webpack 4.x搭建react开发环境
查看>>
APP定制开发的完整流程
查看>>
使用 xcworkspace 管理 iOS 工程
查看>>
#iframe系列问题#
查看>>
PHP设计模式
查看>>
聊聊flink TaskManager的managed memory
查看>>
oracle先排序再分页
查看>>
javascript 判断数据类型的几种方法
查看>>
前端进击的巨人(七):走进面向对象,原型与原型链,继承方式
查看>>
canvas 绘制贪吃蛇游戏
查看>>
时间复杂度与空间复杂度分析
查看>>
从Express到Nestjs,谈谈Nestjs的设计思想和使用方法
查看>>
Java的8中基本数据类型
查看>>
Android 原生app获取用户授权访问Autodesk云应用数据
查看>>
LeetCode 310. Minimum Height Trees
查看>>
《Java编程思想》读书笔记-对象导论
查看>>
计算机体系
查看>>
算法 - 时间复杂度
查看>>
如何截取视频片段 批量截取片段的方法
查看>>