gpt4 book ai didi

Android 从 Assets 文件夹中读取 PDF 文件

转载 作者:行者123 更新时间:2023-11-29 21:19:43 26 4
gpt4 key购买 nike

我有需要放在 asstes 文件夹中的 PDF 文件列表,我的要求是从 asstes 读取文件并将其显示在 ListView 中。如果我们点击每个列表项需要阅读相应的 PDF 文件

我已经关注了这个博客 http://androidcodeexamples.blogspot.in/2013/03/how-to-read-pdf-files-in-android.html

但是这里他们给出了从外部存储目录读取 PDF 文件

我想从 Asstes 文件夹中实现相同的读取文件

谁能帮助如何实现从 asstes 读取文件的相同示例?

最佳答案

无法直接从assets文件夹中打开pdf文件,需要先将assets文件夹中的文件写入sd卡,再从sd卡读取。

尝试下面的代码从 Assets 文件夹中复制和读取文件:

 //method to write the PDFs file to sd card 
private void PDFFileCopyandReadAssets()
{
AssetManager assetManager = getAssets();

InputStream in = null;
OutputStream out = null;
File file = new File(getFilesDir(), "test.pdf");
try
{
in = assetManager.open("test.pdf");
out = openFileOutput(file.getName(), Context.MODE_WORLD_READABLE);

readFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch (Exception e)
{
Log.e("tag", e.getMessage());
}

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(
Uri.parse("file://" + getFilesDir() + "/test.pdf"),
"application/pdf");

startActivity(intent);
}

private void readFile(InputStream in, OutputStream out) throws IOException
{
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1)
{
out.write(buffer, 0, read);
}
}

打开sdcard中的文件如下:

File file = new File("/sdcard/test.pdf");        
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file),"application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

同时在 list 中提供写入外部存储的权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

关于Android 从 Assets 文件夹中读取 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20898066/

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