0

我需要在我的 android 应用程序中打开 pdf 文档。我使用意图启动 foxit pdf 阅读器。如果我直接从 sd 卡传递文件,则 foxit 阅读器运行没有问题。但是我的 pdf 文件位于我的应用程序的私有文件夹中,所以我使用 ContentProvider 通过覆盖我的 ContentProvider 中的 openFile(Uri uri,int mode) 方法来传递文件。这里我通过 ParcelFileDescriptor。foxit reader 运行,我的文档出现在 reader view 上,但是 foxit reader 中的所有工具都被禁用的问题,这个问题只在使用 ContentProvider 时出现。我尝试将文件模式更改为 READ_WRITE 等,但问题仍然出现。请问这个问题的解决方法是什么。非常感谢您。

这是我的 openFile 方法:

@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) {
    try{            

        File f=new File(uri.getPath());
        if (f.exists()) {
            ParcelFileDescriptor pfd = ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
            return pfd;
        }
    }catch(FileNotFoundException ex){
        Toast.makeText(getContext(), "File not found", Toast.LENGTH_LONG).show();
    }catch (Exception e) {
        e.printStackTrace();
    }
    return null;        
}
4

1 回答 1

0

很难说出了什么问题,因为涉及到第 3 方工具。此外,您没有说明要传递给 openFile 的 URI 类型。如果您传递的是 file:// URI,那么您的方法可能行不通。您需要澄清一下,但我的预感是 foxit pdf 阅读器无法处理您内部存储中的文件。

于 2013-10-01T02:46:22.140 回答