gpt4 book ai didi

android - 如何从Android应用程序中获取打印输出?

转载 作者:行者123 更新时间:2023-11-29 01:44:01 25 4
gpt4 key购买 nike

您好,在我的应用程序中,我想打印出我的 webview 页面,即 html 页面。谁能告诉我我做错了什么。我的问题是代码在 emultor 中运行,而不是在任何其他设备中运行。

主要 Activity .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());
}
}

上面的代码在模拟器中运行,但在 emultor 中没有 wifi,如果相同的代码在 android 设备中运行意味着它显示错误并且没有显示正确的输出我也想从 android 中获取打印输出。谢谢。

最佳答案

打印框架仅适用于 api 级别 19 及以上 (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());
}
}

关于android - 如何从Android应用程序中获取打印输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22603088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com