【发布时间】:2011-07-21 18:16:13
【问题描述】:
我需要在外部应用程序(如 Adobe Reader)中打开应用程序内的一些 pdf 文件(原始文件夹)
如果文件在 SD 卡中,我尝试使用此代码完美运行,但是,如果我尝试将应用程序(包)目录放在文件行中,则没有任何反应:
public void onClick(View v) {
File file = new File("/sdcard/myfile2.pdf");
if (file.exists()) {
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
startActivity(intent);
}
catch (ActivityNotFoundException e) {
Toast.makeText(referencias.this,
"No Application Available to View PDF",
Toast.LENGTH_SHORT).show();
}
}
}
我也试试这段代码。 应用程序 Adobe 阅读器打开但我收到无效的访问目录错误:
public void onClick(View v) {
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("file:///data/app/mypackage/res/raw/myfile.pdf"),
"application/pdf");
try{
startActivity(i);
}
catch (ActivityNotFoundException e) {
Toast.makeText(referencias.this,
"No Application Available to View PDF",
Toast.LENGTH_SHORT).show();
}
最后的解决方案是每次从原始文件夹复制pdf文件到SD卡,如this tutorial。
但是真的很复杂,代码很多。
【问题讨论】:
-
"file:///data/app/mypackage/res/raw/myfile.pdf" 不是有效的 URL,因为包中没有文字文件系统文件。如果可以通过 URL 访问 .apk 的内容,则它必须是不同形式之一 - 所有 file:///data/app/... 都可以让您获取 .apk 的 zip 文件。 apk 本身。
-
能否给我看一下onSave代码,我认为问题出在 File file =new File(...);