我正在尝试使用PDF阅读器打开我的PDF文件,我正在搜索更多关于我如何做到这一点,找到了很多答案,但每个答案都说明将该文件保存到“SD卡”。
将文件保存到SD卡是个好主意,但问题是如果用户没有在手机中安装SD卡。目前很多手机都有大型内置内存,例如:三星Galaxy S3,HTC One V,三星Galaxy Note,索尼Xperia S和许多手机。
所以我的问题是:这些手机已经有一个大的内置内存,因此用户无需添加SD卡(取决于用户)。在这种情况下,其他应用程序可以访问哪个位置,例如公共位置(SD卡)。
当我搜索我的问题时,我发现这个link告诉我们保存Android平台提供的应用程序数据的位置。
Android平台提供以下选项来保存应用数据:
Android提供了一种通过内容提供商将私有数据公开给其他应用程序的方法
我读过有关内容提供商的内容,但我不明白它是如何运作的。
如果有任何教程展示它是如何工作的,请提供该教程链接,或者如果可以通过其他方式完成,请告诉我如何。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
根据documentation,您可以将PDF保存在公共存储中的唯一真正选项是将其存储在外部存储中。您可以随时让您的应用程序检查外部存储是否可用,然后,如果是,则使用它来共享您的PDF。
您可以尝试的另一种方法(我还没有尝试过,现在只想到它)是将PDF写入Temp文件,然后共享该临时文件的位置。
File.createTempFile()将创建一个临时文件。您可以尝试查看该临时文件的保存位置,然后是否可以通过其他应用访问该位置。
答案 1 :(得分:0)
您可以使用以下技术进行保存,而不是使用SDCard ..
答案 2 :(得分:0)
在我的应用程序中,我只使用sdCard(如果可用)和手机内存。
对于手机记忆,您可以获得如下文件对象:
File file=new File(context.getFilesDir(), FILENAME);
当然,context是Context对象。然后,您可以像使用具有读/写操作的常规Java文件一样使用此文件。
对于SD卡存储,您必须先在清单中声明:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
您应该检查外部存储是否可用:
public static boolean hasSdCard(){
return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
}
然后你可以得到一个文件对象
File file = new File(Environment.getExternalStorageDirectory() + DIRECTORY + FILENAME);