Pessoal, estou tentando fazer a impressão em uma impressora Bluetooth, e seguindo o tutorial: https://developer.android.com/training/printing/html-docs?hl=pt-BR, fiz o seguinte:
public class MainActivity extends AppCompatActivity {
WebView mywebView;
WebView mWebView;
private static final String TAG = "MainActivity";
@SuppressLint("JavascriptInterface")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mywebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mywebView.getSettings();
webSettings.setJavaScriptEnabled(true);
getSupportActionBar().hide();
mywebView.setInitialScale(1);
mywebView.getSettings().setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
mywebView.getSettings().setDomStorageEnabled(true);
mywebView.getSettings().setDatabaseEnabled(true);
mywebView.getSettings().setMinimumFontSize(1); //opcional
mywebView.getSettings().setMinimumLogicalFontSize(1); //opcional
mywebView.getSettings().setSupportZoom(false); //opcional
mywebView.getSettings().setAllowFileAccess(true);
mywebView.getSettings().setAllowContentAccess(true);
mywebView.loadUrl("http://192.168.1.17:8080/teste/");
mywebView.setWebViewClient(new WebViewClient());
}
class MyJavascriptInterface {
Context context;
WebView view;
public MyJavascriptInterface(Context context, WebView view) {
this.context = context;
this.view = view;
}
@JavascriptInterface
public void doPrint() {
createWebPrintJob(view);
}
private void doWebViewPrint(WebView webView) {
WebView webView2 = (WebView) findViewById(R.id.webview);
webView2.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
Log.i(TAG, "page finished loading " + url);
createWebPrintJob(view);
mWebView = null;
}
});
mywebView.loadUrl("http://192.168.1.17:8080/teste/paginas/imprime.xhtml");
mWebView = webView;
}
}
private void createWebPrintJob(WebView webView) {
// Get a PrintManager instance
PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
String jobName = getString(R.string.app_name) + " Document";
// Get a print adapter instance
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter(jobName);
// Create a print job with name and adapter instance
PrintJob printJob = printManager.print(jobName, printAdapter, new PrintAttributes.Builder().build());
// Save the job object for later status checking
// printJobs.add(printJob);
}
public void onBackPressed() {
if (mywebView.canGoBack()) {
mywebView.goBack();
} else {
super.onBackPressed();
}
}
}
Hoje a situação é: Na pagina inicial, escolho 5 números e, após clicar em finalizar, exibo as dezenas na pagina imprime.xhtml, e gostaria de imprimir usando uma impressora Bluetooth através do meu WebView.
Na página imprime.xhtml, coloquei 2 botões. 1 para imprimir pelo computador e outro para android. Só que quando executo no Android não acontece nada. Minha página:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<h:outputStylesheet library="css" name="estilos.css" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=0" />
</h:head>
<body>
<h:outputText value="Dezenas Escolhidas:"/><br></br>
<h:outputText value="#{imprimeController.dezena.b1} - "></h:outputText>
<h:outputText value="#{imprimeController.dezena.b2} - "></h:outputText>
<h:outputText value="#{imprimeController.dezena.b3} - "></h:outputText>
<h:outputText value="#{imprimeController.dezena.b4} - "></h:outputText>
<h:outputText value="#{imprimeController.dezena.b5} - "></h:outputText>
<input type="button" value="Imprimir" onClick="window.print()" />
<input type="button" value="Android" onClick="doWebViewPrint()" />
<script type="text/javascript">
function doWebViewPrint() {
Android.doPrint();
}
</script>
</body>
</html>