2

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

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

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

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

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

  1. 共享偏好
  2. 内部存储器
  3. 外置储存
  4. SQLite 数据库
  5. 网络连接

Android 提供了一种向其他应用程序公开私有数据的方法——使用内容提供程序

我阅读了有关内容提供商的信息,但我不明白它是如何工作的。

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

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

4

3 回答 3

1

根据文档,您必须将 PDF 保存在公共存储中的唯一真正选择是将其存储在外部存储中。您总是可以让您的应用程序检查外部存储是否可用,如果可用,则使用它来共享您的 PDF。

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

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

于 2012-08-10T14:08:46.367 回答
0

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

  1. 共享首选项 例如:--SharedPreferences demo_sp = getApplicationContext() .getSharedPreferences("demo", MODE_PRIVATE); 字符串 dem= demo_sp.getString("DEMO", "demo");
  2. 内部存储器
  3. SQLite 数据库,一旦您在 sqlite 中存储任何内容,它将在您手机中的 .db 文件上创建,您可以访问它
于 2012-08-10T09:49:26.257 回答
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);
于 2012-08-15T17:26:14.337 回答