我正在尝试检索对存储在assets
目录中的文件的引用,该文件名为myfile.pdf
。我尝试这样做如下:
File file = new File("android_assest/myfile.pdf);
Log.d("myTag", "" + file.isFile());
不知何故,false
当目录中myfile.pdf
存在do
时,我得到了assets
。我使用getAssets().list("")
和Log.d()
返回数组中的每个元素验证了它。
其中,我尝试获取对PDF文件的引用,然后使用设备上已安装的任何PDF查看器来查看PDF。
我猜想由于前一个问题(检索对文件的引用)返回false
了,因此下一个被剪切的代码失败了:
Intent i = new Intent(Intent.ACTION_VIEW,
Uri.parse("file:///android_asset/myfile.pdf"));
startActivity(i);
有人知道为什么我无法检索对该文件的引用吗?以及为什么我不能使用已经安装的PDF查看器显示PDF(在检索对PDF文件的引用之后)?
谢谢。
正如巴拉克所说,您可以将其从资产中复制到内部存储或SD卡中,然后使用内置的pdf应用程序从中打开它。
关注Snippet将为您提供帮助。(我已经更新了此代码,以写入内部存储并从中读取文件。
但是我不推荐这种方法,因为pdf文件的大小可以超过100mb。
因此不建议将大文件保存到内部存储中
还要确保在将文件保存到您使用的内部存储时
openFileOutput(file.getName(), Context.MODE_WORLD_READABLE);
然后,只有其他应用程序才能读取它。
检查以下代码段。
package org.sample;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
public class SampleActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
CopyReadAssets();
}
private void CopyReadAssets()
{
AssetManager assetManager = getAssets();
InputStream in = null;
OutputStream out = null;
File file = new File(getFilesDir(), "git.pdf");
try
{
in = assetManager.open("git.pdf");
out = openFileOutput(file.getName(), Context.MODE_WORLD_READABLE);
copyFile(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() + "/git.pdf"),
"application/pdf");
startActivity(intent);
}
private void copyFile(InputStream in, OutputStream out) throws IOException
{
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1)
{
out.write(buffer, 0, read);
}
}
}
确保包括
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在清单中
如何在任何浏览器中显示创建的pdf? 当前的输出是这样的,基本上是原始的PDF: %PDF-1.4%2 0 obj<>流x+r 26 s 00 si 2 p 5 1 b 4>>>>/父3 0 r/mediabox[0 0 595 842]>>内dobj 1 0 obj<>内dobj 3 0 obj<>内dobj 5 0 obj<>内dobj 6 0 obj<>内dobj xref 0 7 000
问题内容: 我查看了Stack上的2个示例,但无法使它们正常工作。我只是 想从资产中的文件夹中获取图像并将其设置为ImageView中的值, 但是返回空指针。我究竟做错了什么? 主要活动:包com.xxx.xxx; Extender Class: And my two xml files: Layout> EDIT: Also tried this, but still get a file no
我是android编程新手,有没有一种方法可以使用View在android中加载或显示html文件表单资产文件夹。OnClickListener 让我重新表达我的问题:有没有可能写一个类似下面的代码来调用/加载/显示本地html文件表单资产文件夹时,按钮被点击 如果我不够清楚,一定要告诉我。。 非常感谢!!!!
问题内容: 我从这段代码中从laravel dompdf返回流数据 这是我的JS ajax代码 这是在ajax之后显示pdf的HTML 我低于错误 无法加载PDF文档 请帮助解决此问题。如何显示PDF文件。 问题答案: 默认情况下没有设置。您可以使用polyfill,例如实现二进制数据传输的jquery- ajax-blob-arraybuffer.js ,也可以利用。 。用element代替el
问题内容: 我的/ res / raw /文件夹(/res/raw/textfile.txt)中有一个资源文件,我正在尝试从我的android应用中读取该文件进行处理。 我尝试了不同的路径语法,但始终会遇到 java.io.FileNotFoundException 错误。如何访问/res/raw/textfile.txt进行处理?是 File file = new File(“ res / ra
我正在尝试使用Swift在我的iOS应用程序中显示pdf。我从服务器得到的响应是pdf数据,它看起来如下所示: %PDF-1.4%ôiá1 0 obj 我检查了iOS PDF阅读器和PDFKit,但主要问题是我不明白如何处理应用程序中的响应。 有什么想法吗?谢谢!