我正在制作一个应用程序,当我通过我的应用程序下载文件时,它会被下载到我的应用程序数据空间中。我这样做基本上是因为用户不会访问下载的文件,因为如果它存储在sdcard或内存中,它们可以访问它。 所以我的问题是,当用户通过任何第三方应用程序点击该文件时,我想打开该文件。当文件被下载时,它将弹出打开或不打开。如果点击打开则应该由其他第三方应用程序打开。 例如如果我下载abc.doc那么它应该让我通过各种读者打开。
这可能吗?如果没有,我可以实施什么解决方案? 这是否需要设备根...?
答案 0 :(得分:0)
我这样做基本上是因为用户不会访问下载的文件,因为如果它存储在SD卡或内存中,它们就可以访问它。
首先,“内部存储器”是“应用程序数据空间”,假设“应用程序数据空间”是指文件存储而不是RAM。您可以在Android中只写两个地方:内部存储和外部存储。
其次,希望即使在内部存储上也可以访问您的文件的用户,例如通过生根设备。
所以我的问题是,当用户通过任何第三方应用程序点击该文件时,我想打开该文件。当文件被下载时,它将弹出打开或不打开。如果点击打开则应该由其他第三方应用程序打开。例如如果我下载abc.doc那么它应该让我通过各种读者打开。
使用MODE_WORLD_READABLE
创建文件时,您可以选择将文件设为openFileOutput()
。这可能允许某些第三方应用程序访问该文件。或者,您可以实施ContentProvider
来提供此文件。这些中的任何一个也将允许用户访问该文件(例如,通过那些查看器应用程序中的“共享”选项),这与您的原始目标背道而驰。
除了通过您的应用程序,用户无法访问的文件的唯一方法是您的应用是查看(或以其他方式使用)文件的方式。而且,正如我上面提到的,即使那时root用户仍然可以选择访问该文件。