Android 如何使用手机内置的其他应用程序读取我的应用程序中的pdf,以100KB为单位

Android 如何使用手机内置的其他应用程序读取我的应用程序中的pdf,以100KB为单位,android,pdf,Android,Pdf,我正在构建一个应用程序,需要在其中读取加密的pdf。我将按100kB块解密pdf。首先,100kB将被解密。此区块必须由手机内置的另一个pdf阅读器应用程序读取 读取这100 kB后,将解密另一个100 kB的数据。此块将由pdf阅读器应用程序读取。100 KB数据的前一个副本将被加密。我能做些什么来实现这个目标 目前,我有以下代码,其中没有办法读取一个pdf由另一个应用程序的100 kb块 Uri path_sultan = Uri.fromFile(file); Inten

我正在构建一个应用程序,需要在其中读取加密的pdf。我将按100kB块解密pdf。首先,100kB将被解密。此区块必须由手机内置的另一个pdf阅读器应用程序读取

读取这100 kB后,将解密另一个100 kB的数据。此块将由pdf阅读器应用程序读取。100 KB数据的前一个副本将被加密。我能做些什么来实现这个目标

目前,我有以下代码,其中没有办法读取一个pdf由另一个应用程序的100 kb块

Uri path_sultan = Uri.fromFile(file); 
        Intent intent = new Intent(Intent.ACTION_VIEW); 
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        String ext =GetFileExtension(file.getAbsolutePath());

        if(ext.equalsIgnoreCase("pdf")  )
            ext = "application/" +ext.toLowerCase() ;
        else if( ext.equalsIgnoreCase("epub") )
            ext = "application/" +ext.toLowerCase();
        intent.setDataAndType(path_sultan,ext); 

        try 
        { 
            startActivity(intent); 
        }  
        catch (ActivityNotFoundException e) 
        { 
           // Toast.makeText(this,"No Application Available to View PDF",Toast.LENGTH_SHORT).show(); 
        }       
    }
伙计们,在这方面你们能帮我吗?我急需你的建议

我能做些什么来实现这个目标

最有可能的是,从头开始编写自己的PDF渲染器。PDF查看器需要访问整个流,按照自己的选择读入,而不是基于任意的“100KB”分界线

如果您愿意对“100KB”部分进行精细处理,并根据查看者的需要对数据进行动态解密,则可以使用
ContentProvider
。使用
ParcelFileDescriptor
管道实现
openFile()
,以允许查看器从写入解密数据的流中读取数据


演示此技术,减去实际解密。这进一步限制了对我指定的应用的访问,在我启动它们的活动时授予
Uri
权限。

谢谢@Mark Murphy。我正在通过阅读你的书来学习android。这是一个伟大的时刻,我可以直接与我最喜欢的作家交流。@OcenaPothik:如果你真的认为我是你最喜欢的作家,我感到很谦卑。顺便说一句,上面链接的第二个示例还没有出现在书中,但应该在下一次更新中,并对其工作原理进行完整的解释。我无法从git hub下载。过程是什么?或者你能把它寄到“感兴趣的”吗_programming@yahoo.com“@OcenaPothik:访问repo主页()并单击ZIP按钮下载整个存储库的ZIP存档。我可以成功运行您的代码,但管道内容提供程序中出现异常。你能检查一下吗?