小编Cla*_*usS的帖子

Android N:PrintManager.print()导致java.lang.IllegalStateException:只能从活动打印

我的应用程序使用PrintManager进行PDF打印.此功能在Android L和M中运行良好,但在Android N下失败.

在onOptionsItemSelected()的选项菜单中的非片段活动中调用打印操作.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
    String jobName = "createPDFReport";
    printManager.print(jobName, new InterimReportAdapter(AuditValidation.this, auditObject), new PrintAttributes.Builder().build());
}
Run Code Online (Sandbox Code Playgroud)

Android N抛出

FATAL EXCEPTION: ec.kat.kataudit, PID: 4052
java.lang.IllegalStateException: Can print only from an activity
at android.print.PrintManager.print(PrintManager.java:525)
at ec.kat.kataudit.AuditValidation.onOptionsItemSelected(AuditValidation.java:124)
at android.app.Activity.onMenuItemSelected(Activity.java:3204)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:408)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
...
Run Code Online (Sandbox Code Playgroud)

AuditValidation.java:124指向printManager.print()调用.

Activity扩展了android.support.v7.app.AppCompatActivity.编译目标版本为25,app正在使用最新的库(截至今天为25.3.1).

任何想法都非常感谢!

最好的祝福!

java android pdf-generation illegalstateexception

2
推荐指数
1
解决办法
1398
查看次数