Android: 打印Bundle内容。

有的时候在接收一个Intent的数据的时候,不知道key是什么。希望能打印出其key和content。

下面的方法可以实现这个功能:

Bundle bundle = intent.getExtras();
        	for (String key: bundle.keySet())
        	{
        	  Log.i("Bundle Content", "Key=" + key + ", content=" +bundle.getString(key));
        	}

您好,要在 Android 应用程序中进行打印,可以使用 Android 打印框架(Android Printing Framework)。以下是一个简单的示例,演示如何使用打印框架: 1. 在 AndroidManifest.xml 文件中添加打印机权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> <uses-feature android:name="android.hardware.usb.host" android:required="false" /> <uses-feature android:name="android.hardware.nfc" android:required="false" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.bluetooth" android:required="false" /> ``` 2. 在您的应用程序中创建一个打印类,实现PrintDocumentAdapter接口 ```java public class MyPrintDocumentAdapter extends PrintDocumentAdapter { private Context mContext; private PrintedPdfDocument mPdfDocument; private int mPageHeight; private int mPageWidth; private int mTotalPages; public MyPrintDocumentAdapter(Context context) { mContext = context; } @Override public void onStart() { super.onStart(); // 初始化打印文档 mPdfDocument = new PrintedPdfDocument(mContext, getPrintAttributes()); } @Override public void onFinish() { super.onFinish(); // 释放资源 mPdfDocument.close(); mPdfDocument = null; } @Override public void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes, CancellationSignal cancellationSignal, LayoutResultCallback callback, Bundle extras) { // 获取打印页面大小 mPageHeight = newAttributes.getMediaSize().getHeightMils() / 1000 * 72; mPageWidth = newAttributes.getMediaSize().getWidthMils() / 1000 * 72; // 计算总页数 mTotalPages = 1; // 检查是否取消打印 if (cancellationSignal.isCanceled()) { callback.onLayoutCancelled(); return; } // 创建打印页面 PrintDocumentInfo.Builder builder = new PrintDocumentInfo.Builder("print_output.pdf") .setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT) .setPageCount(mTotalPages); PrintDocumentInfo info = builder.build(); callback.onLayoutFinished(info, true); } @Override public void onWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback) { // 创建渲染器 PdfRenderer renderer = new PdfRenderer(mPdfDocument); // 渲染每一页 for (int i = 0; i < mTotalPages; i++) { // 检查是否取消打印 if (cancellationSignal.isCanceled()) { callback.onWriteCancelled(); renderer.close(); return; } // 获取打印页面 PdfRenderer.Page page = renderer.openPage(i); // 创建画布 Bitmap bitmap = Bitmap.createBitmap(mPageWidth, mPageHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); // 将页面渲染到画布上 page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT); // 将画布保存到 PDF 文档中 PdfDocument.Page pdfPage = mPdfDocument.startPage(i + 1); canvas.drawBitmap(bitmap, 0, 0, null); mPdfDocument.finishPage(pdfPage); // 释放资源 page.close(); } // 写入 PDF 文档到输出流 try { OutputStream outputStream = new FileOutputStream(destination.getFileDescriptor()); mPdfDocument.writeTo(outputStream); callback.onWriteFinished(new PageRange[]{PageRange.ALL_PAGES}); } catch (IOException e) { callback.onWriteFailed(e.toString()); } finally { mPdfDocument.close(); mPdfDocument = null; renderer.close(); } } } ``` 3. 在您的应用程序中调用打印服务 ```java PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE); String jobName = getString(R.string.app_name) + " Document"; printManager.print(jobName, new MyPrintDocumentAdapter(this), null); ``` 以上是一个简单的示例,演示如何使用打印框架在 Android 应用程序中进行打印。您可以根据您的需求进行修改和扩展。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值