如何在Android WebView中通过Java启用Print按钮实现页面打印
Android WebView 配置仅通过HTML按钮触发打印
1. 布局中添加WebView
先在你的布局文件(比如activity_main.xml)里加入WebView组件:
<WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent" />
2. Java代码初始化WebView并配置打印逻辑
在对应的Activity类中,完成WebView初始化、开启JavaScript支持,同时拦截HTML里的window.print()调用,触发系统打印流程:
import android.os.Bundle; import android.print.PrintManager; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.webView); WebSettings webSettings = webView.getSettings(); // 必须启用JavaScript,因为HTML按钮靠JS触发打印 webSettings.setJavaScriptEnabled(true); // 设置WebChromeClient拦截window.print()请求 webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onPrintRequested() { // 获取系统打印管理器 PrintManager printManager = (PrintManager) getSystemService(PRINT_SERVICE); if (printManager != null) { // 发起WebView内容打印 printManager.print("WebView页面打印", webView.createPrintDocumentAdapter(), null); return true; // 标记请求已处理 } return false; } }); // 加载你的HTML页面(本地assets文件或远程URL都支持) // 示例:加载本地assets中的HTML文件 webView.loadUrl("file:///android_asset/print_page.html"); // 加载远程URL的话写:webView.loadUrl("https://你的域名/打印页面.html"); } }
3. 确保HTML打印按钮正常工作
你的HTML页面里的打印按钮要正确触发window.print(),代码示例:
<button onclick="window.print()">Print Page</button> <!-- 其他页面内容 -->
注意事项
- 仅允许HTML按钮触发:上述配置只会响应HTML按钮发起的
window.print()调用。如果要彻底禁用其他打印途径(比如WebView长按弹出的系统菜单),可以加一行代码禁用长按菜单:webView.setOnLongClickListener(v -> true); // 禁用WebView长按菜单 - 低版本Android兼容:
onPrintRequested()是Android 5.0(API 21)才支持的方法,若需兼容更低版本,改用JS接口注入的方式:
同时修改HTML按钮的点击事件:// 给WebView注入自定义JS接口 webView.addJavascriptInterface(new Object() { @JavascriptInterface public void printPage() { PrintManager printManager = (PrintManager) getSystemService(PRINT_SERVICE); if (printManager != null) { printManager.print("WebView页面打印", webView.createPrintDocumentAdapter(), null); } } }, "AndroidPrint");<button onclick="AndroidPrint.printPage()">Print Page</button>
配置完成后,点击HTML里的Print按钮就会唤起系统打印界面,和你想要的效果一致。
内容的提问来源于stack exchange,提问作者iDibya.com
相关产品推荐
相关产品推荐

