致命异常:仅在Android Q中,java.lang.IllegalArgumentException fd在PrintAdapter类的onwrite中不能为null

问题描述

当我在Android Q设备上针对Print PDF功能进行测试时,突然遇到了这个问题。在Android P之前,它的运行情况都很好。我试图在互联网上找到解决方案,但没有用。任何帮助都会很好。

解决方法

我通过参考以下官方文档获得了解决方案:Android 10 Privacy

我们必须添加:

android:requestLegacyExternalStorage="true"

在清单文件的应用程序标记中,对于版本> = 29。

The documentation:

如果{@code true},则此应用希望在旧版存储下运行 模型。请注意,由于政策或 向后兼容的原因。应用不请求旧版存储 可以继续通过以下方式发现和读取属于其他应用的媒体 {@code MediaStore}。默认值为:-对于应用,{@ code false} targetSdkVersion> = 29(Q)。 -{@code true}适用于具有 targetSdkVersion 29。

尽管这篇文章指出,将从Android 11开始引入作用域存储,因此从Android 11开始将无法解决这一问题。

在这里

为了给开发人员更多时间进行测试,针对性应用 Android 10(API级别29)仍可以请求 requestLegacyExternalStorage属性。

因此,您必须强制性地跳到适用于> = Android 11的作用域存储。

希望此解决方案可以帮助某人。