将私人数据保存到公共位置

时间:2012-08-10 09:42:07

标签: java android

我正在尝试使用PDF阅读器打开我的PDF文件,我正在搜索更多关于我如何做到这一点,找到了很多答案,但每个答案都说明将该文件保存到“SD卡”。

将文件保存到SD卡是个好主意,但问题是如果用户没有在手机中安装SD卡。目前很多手机都有大型内置内存,例如:三星Galaxy S3,HTC One V,三星Galaxy Note,索尼Xperia S和许多手机。

所以我的问题是:这些手机已经有一个大的内置内存,因此用户无需添加SD卡(取决于用户)。在这种情况下,其他应用程序可以访问哪个位置,例如公共位置(SD卡)。

当我搜索我的问题时,我发现这个link告诉我们保存Android平台提供的应用程序数据的位置。

Android平台提供以下选项来保存应用数据:

  1. 共享偏好设置
  2. 内部存储
  3. 外部存储
  4. SQLite数据库
  5. 网络连接
  6. Android提供了一种通过内容提供商将私有数据公开给其他应用程序的方法

    我读过有关内容提供商的内容,但我不明白它是如何运作的。

    如果有任何教程展示它是如何工作的,请提供该教程链接,或者如果可以通过其他方式完成,请告诉我如何。

    任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:1)

根据documentation,您可以将PDF保存在公共存储中的唯一真正选项是将其存储在外部存储中。您可以随时让您的应用程序检查外部存储是否可用,然后,如果是,则使用它来共享您的PDF。

您可以尝试的另一种方法(我还没有尝试过,现在只想到它)是将PDF写入Temp文件,然后共享该临时文件的位置。

File.createTempFile()将创建一个临时文件。您可以尝试查看该临时文件的保存位置,然后是否可以通过其他应用访问该位置。

答案 1 :(得分:0)

您可以使用以下技术进行保存,而不是使用SDCard ..

  1. 共享偏好设置 例如: - SharedPreferences demo_sp = getApplicationContext()             .getSharedPreferences(“demo”,MODE_PRIVATE);     String dem = demo_sp.getString(“DEMO”,“demo”);
  2. 内部存储
  3. SQLite数据库,一旦你在sqlite中存储了任何东西,它就会在手机上创建.db文件,你可以访问它

答案 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);