How to take printout from android app?
android, printing
Solution
Printing framework works only api level 19 and above (android kitkat).
private void createWebPrintJob(WebView webView) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
{
PrintManager printManager = (PrintManager) this.getSystemService(Context.PRINT_SERVICE);
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter();
String jobName = getString(R.string.app_name) + " Print Test";
printManager.print(jobName, printAdapter,new PrintAttributes.Builder().build());
}
}
Problem
Hi In My Application i want to take printout my webview page i.e html page.can anybody tell me what i did the mistake.my problem is code running in emultor not in any other devices. MainActivity.java: ``` package com.example.print1; import android.os.Build; import android.os.Bundle; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.Activity; import android.webkit.WebView; import android.webkit.WebViewClient; import android.print.PrintAttributes; import android.print.PrintDocumentAdapter; import android.print.PrintManager; import android.content.Context; @SuppressLint("NewApi") public class MainActivity extends Activity { private WebView myWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.web_print); WebView webView = new WebView(this); webView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } @Override public void onPageFinished(WebView view, String url) { createWebPrintJob(view); myWebView = null; } }); String htmlDocument = "<html><body><h1>Android Print Test</h1><p>" + "This is some sample content.</p></body></html>"; webView.loadDataWithBaseURL(null, htmlDocument, "text/HTML", "UTF-8", null); myWebView = webView; } @TargetApi(19) @SuppressLint("NewApi") private void createWebPrintJob(WebView webView) { PrintManager printManager = (PrintManager) this.getSystemService(Context.PRINT_SERVICE); PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter(); String jobName = getString(R.string.app_name) + " Print Test"; printManager.print(jobName, printAdapter,new PrintAttributes.Builder().build()); } } ``` WebPrintActivity.java ``` package com.example.print1; import android.os.Bundle; import android.print.PrintAttributes; import android.print.PrintDocumentAdapter; import android.print.PrintManager; import android.app.Activity; import android.content.Context; import android.view.Menu; import android.view.MenuItem; import android.webkit.WebView; public class WebPrintActivity extends Activity { private WebView myWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myWebView = (WebView) findViewById(R.id.webView1); myWebView.loadUrl("http://developer.android.com/google/index.html"); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_print: createWebPrintJob(myWebView); return true; default: return super.onOptionsItemSelected(item); } } private void createWebPrintJob(WebView webView) { PrintManager printManager = (PrintManager) this .getSystemService(Context.PRINT_SERVICE); PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter(); String jobName = getString(R.string.app_name) + " Print Test"; printManager.print(jobName, printAdapter, new PrintAttributes.Builder().build()); } } ``` The above code is running in emulator but there is no wifi in emultor ,if the same code runs in android device means its shows error and it doesnt show proper output also i want to take the printout from android. Thanks.