打开位于App(原始文件夹)内的pdf文件

时间:2011-07-21 18:16:14

标签: android file pdf

我需要在外部应用程序(如Adobe Reader)中打开位于应用程序内部的一些pdf文件(原始文件夹)

如果文件在SD卡中,我尝试使用这个完美的代码但是,如果我尝试将app(包)目录放在文件行中,则没有任何反应:

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 Reader打开但我收到无效的访问目录错误:

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

但是真的很复杂且代码很多。

2 个答案:

答案 0 :(得分:1)

如果您使用该应用程序编写了pdf,则应用程序文件权限可能不允许外部可见性。查看:http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

答案 1 :(得分:0)

试试这件事:

File mFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
                "your_file.ext"); // ext meens extension .doc .zip ....

然后将你的数据保存到这个文件,制作一个意图,你做了...但是 使用mFile而不是创建新文件或

File fileForUri=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"your_file.ext"

试试这个