Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从字节数组创建文件而不保存到文件目录_Java_Android_Pdf - Fatal编程技术网

Java 从字节数组创建文件而不保存到文件目录

Java 从字节数组创建文件而不保存到文件目录,java,android,pdf,Java,Android,Pdf,我正在从事一个Android项目,其中有一个PDF文件作为字节数组。我的目标是呈现此PDF文件并在我的应用程序中向用户显示(无需调用任何其他第三方PDF查看器) 出于安全原因,即使是暂时的,我也不允许在电话目录中创建文件 Android 5.0附带了一个PdfRenderer库,您可以在其中传递FileDescriptor,但我无法使用它。有没有办法做到这一点 编辑: 感谢从技术上讲,安卓5.0附带了一个PdfRenderer类,您可以在该类中传递ParcelFileDescriptor。理论上

我正在从事一个Android项目,其中有一个PDF文件作为字节数组。我的目标是呈现此PDF文件并在我的应用程序中向用户显示(无需调用任何其他第三方PDF查看器)

出于安全原因,即使是暂时的,我也不允许在电话目录中创建文件

Android 5.0附带了一个
PdfRenderer
库,您可以在其中传递
FileDescriptor
,但我无法使用它。有没有办法做到这一点

编辑:


感谢

从技术上讲,安卓5.0附带了一个
PdfRenderer
类,您可以在该类中传递
ParcelFileDescriptor
。理论上,您可以创建一个
ParcelFileDescriptor
管道,并从RAM向其提供字节。但是,代码示例中的
getSeekableFileDescriptor()
引用表明
PdfRenderer
需要来自
ParcelFileDescriptor
的可查找流,AFAIK消除了所有管道选项。你必须找到一个支持字节数组输入的第三方库,如果没有它,你就倒霉了。我查看了
ParcelFileDescriptor
类,它有一个名为
fromData
的方法。它现在被弃用了,但你认为这会帮助我实现我的目标吗?我现在将把这个方法添加到我的代码中。好吧,这个方法已经被弃用并隐藏了,所以它不一定可靠。您也不能只复制代码,因为
MemoryFile
上的
getFileDescriptor()
本身是隐藏的。我也不知道它是否会给你一个可搜索的结果。是的,它们是隐藏的。我在寻找使用隐藏方法的方法,但正如你所说,这不是一个好的做法。谢谢
@Deprecated
public static ParcelFileDescriptor fromData(byte[] data, String name) throws IOException {
    if (data == null) return null;
    MemoryFile file = new MemoryFile(name, data.length);
    if (data.length > 0) {
        file.writeBytes(data, 0, 0, data.length);
    }
    file.deactivate();
    FileDescriptor fd = file.getFileDescriptor();
    return fd != null ? new ParcelFileDescriptor(fd) : null;
}