在多用户Android(4.2或更高版本)上的用户之间共享数据

时间:2014-02-19 07:20:44

标签: android

Android在4.2(Jelly Bean MR1)中引入了多用户功能,其文档说明:

  

从您的应用程序的角度来看,每个用户都在一个完全独立的设备上运行。

这是来自Environment.getExternalsStorageDirectory()和getExternalStoragePublicDirectory()方法doc的引用:

  

在具有多个用户的设备上(如UserManager所述),每个用户都有自己独立的外部存储。应用程序只能访问正在运行的用户的外部存储。

在不使用网络作为中介的情况下,确实没有可靠的方法在单个设备上的用户之间进行数据通信吗?我正在寻找不依赖于制造商如何布置设备文件系统的怪癖的解决方案。此外,为了安全起见,共享应该是我的应用程序的内部。

即使文件共享确实不可能,通过意图以某种方式进行通信也是可能的吗?

有用例。用例1:假设我正在编写一个需要100MB字典文件的输入法应用程序。我想编写代码,以便在用户A下载此文件时,用户B也可以访问它而无需重新下载。使用案例2:假设我正在写一个有趣的“留下我的妻子一个笔记”应用程序,该应用程序允许用户A键入下次用户B登录时显示的消息(不使用网络)。

This thread在一个单独的网站上提出了一个解决方案,但他们的方法似乎没有记录,可能不可靠。还有一些其他SO questions的标题与此类似,但实际上是在讨论不同的主题。

3 个答案:

答案 0 :(得分:8)

OBB文件(存储在/sdcard/Android/obb中)并用作Google Play中的扩展文件,所有用户都可以按设计共享,因为它们相当大。如果Input方法使用扩展文件,则下载的数据将自动共享。您可以向其他用户发送广播,但这需要INTERACT_ACROSS_USERS权限,该权限是为系统应用程序保留的。

答案 1 :(得分:8)

OBB文件夹(/ sdcard / Android / obb)用于在多用户之间共享文件和文件夹。但OBB文件夹没有显示在我的第二个用户(One plus 5 mobile)中。所以我试图在第二个用户的Android文件夹(/ sdcard / Android /)中创建一个OBB文件夹,并在其中使用“BOOM”。现在我能够访问第二个用户的共享文件。如果您的第二个用户未显示OBB文件夹,请尝试此技巧。

答案 2 :(得分:0)

我也有同样的问题,并且尝试了各种方法,例如使用/sdcard/Android/obb,但在Android 10中不起作用。因此,我遵循以下方法,并且能够在用户之间无缝复制文件。 / p>

  • 登录您要从中复制文件的用户(叫U1)
  • 使用任何选择的应用程序(例如MiXplorer / ES Explorer等)运行FTP Server ...记下端口号,用户名,密码等的详细信息,然后将其指向/sdcard
  • 将用户切换到要将文件复制到的位置(称为U2)
  • 安装FTP浏览器。如果您使用MiXplorer / ES Explorer,它们将允许您添加FTP共享
  • 假设端口为ftp://localhost:2121,请使用2121,如果没有相应更改,请添加FTP共享
  • 打开FTP共享,您可以在此处查看U1的所有文件和文件夹
  • 复制到您的心脏内容中!