0

我很难弄清楚什么是执行以下操作的最佳方法:我正在构建一个供不同应用程序使用的库。该库通过服务提供用户系统,该服务由“管理器应用程序”(用于登录、添加用户等)启动。

我需要提供一种跨应用程序共享文件的工具。

想象一下,我们有一个名为 APP XPTO 的应用程序。这个APP需要存储一些文件(本例可能是录音)。但它不应该在其私有应用程序空间(默认情况下由 Android 提供)中这样做。它应该位于管理器应用程序(或服务,如果您愿意)可以访问的空间。此外,这些文件需要加密,因为我通过该服务提供多用户系统,但我不想面对隐私问题。

我想通过创建一个代表文件的类来让服务管理这个文件系统(FS)抽象:

class MyFile { // make it parcelable
    private String fullpath;
    private byte[] data;
    private User user;
}

并通过意图提供基本的 FS 使用。

APP XPTO 可以发送一个请求文件的意图,在意图中提供它的路径和它“属于”的用户名。该服务将查找文件,使用用户密钥(由用户名标识)对其进行解密,然后创建一个新的 MyFile 对象以将其放入 Intent 并将其发送到 APP XPTO。

通过这种方式,文件可以存储在“私人应用程序空间”中,因为它们将由服务提供。正确的?

然而,这似乎有点“奇怪”。我知道 Android 不是一个多用户操作系统(尽管正在解决这个问题),而且这个想法本身就违反了 Android 的至少一个安全机制(每个应用程序的“私人空间”),但我需要这个工作,这个或类似的东西。在我看来,通过意图提供文件有点“奇怪”......

有什么观察或想法吗?

4

1 回答 1

1

在 Android 使用的不同应用程序之间共享数据ContentProvider

您将实现一个 ContentProvider,而不是 Service。数据的用户可以通过ContentResolver

于 2012-10-17T09:25:31.637 回答