Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多用户功能在Android上的路径是如何工作的? 背景_Android_Android Sdcard_Android External Storage_Multi User - Fatal编程技术网

多用户功能在Android上的路径是如何工作的? 背景

多用户功能在Android上的路径是如何工作的? 背景,android,android-sdcard,android-external-storage,multi-user,Android,Android Sdcard,Android External Storage,Multi User,从版本4.2开始,Android支持多用户(链接和) 每个用户都有自己的应用程序,他们的私人数据只对用户可见 问题 在路径和访问文件方面,每个用户的数据封装是如何工作的 我的意思是,每个用户的路径是什么: 专用的内部存储 模拟外部存储器(内置外部存储器) “真实”外部存储器(sd卡) ? 我猜用户可以看到存储在sd卡上的属于其他用户的数据,但是模拟外部存储呢?他们也可以写其他用户的文件,还是直接读取 每个用户是否自动获得自己的特殊路径?或者开发人员应该处理这个问题 如果开发人员需要处理它,那么应

从版本4.2开始,Android支持多用户(链接和)

每个用户都有自己的应用程序,他们的私人数据只对用户可见

问题 在路径和访问文件方面,每个用户的数据封装是如何工作的

我的意思是,每个用户的路径是什么:

  • 专用的内部存储
  • 模拟外部存储器(内置外部存储器)
  • “真实”外部存储器(sd卡)
  • ?

    我猜用户可以看到存储在sd卡上的属于其他用户的数据,但是模拟外部存储呢?他们也可以写其他用户的文件,还是直接读取

    每个用户是否自动获得自己的特殊路径?或者开发人员应该处理这个问题

    如果开发人员需要处理它,那么应该使用什么作为用户的ID

    文件说:

    无论使用哪种API为给定用户保存数据, 以其他用户身份运行时将无法访问数据

    但这都是假设您将API用于自己的路径。应用程序是否可以通过转到其他路径绕过这一点

    应用程序可以查询同一设备上的每一次安装?他们能得到其他用户应用程序的大小吗?他们甚至可以得到其他用户的应用程序列表吗

    同一应用程序的多个安装是否也需要多个大小

    每个用户的路径是什么

    如果你在乎,你就错了。使用androidsdkapi来确定基本目录,并从那里开始工作。例如:

    • getFilesDir()
      将为当前用户返回正确的内部存储位置
    • getExternalFilesDir()
      Environment
      上的方法将为当前用户返回外部存储的正确位置
    我猜用户可以看到sd卡上存储的属于其他用户的数据

    也就是说,一般来说

    但是模拟的外部存储呢

    每个用户都有自己的空间

    他们也可以写其他用户的文件,还是直接读取

    两者都不是,除非设备中有bug

    每个用户是否自动获得自己的特殊路径

    是的,如果您使用Android SDK API来确定基本目录

    应用程序是否可以通过转到其他路径绕过这一点

    不,因为除非有bug,否则它们既没有读写权限

    应用程序可以查询同一设备上的每一次安装

    好吧,没什么。从应用程序的角度来看,在一台设备上安装多个应用程序与在多台设备上安装的应用程序是无法区分的

    他们能得到其他用户应用程序的大小吗

    对不起,我不知道你所说的“应用程序大小”是什么意思

    他们甚至可以得到其他用户的应用程序列表吗

    这是个好问题。我还没有尝试过使用
    PackageManager
    来查看它在被二级用户运行的应用程序使用时会暴露出什么。理论上,它应该只报告当前用户可用的内容,特别是考虑到Android的受限配置文件

    同一应用程序的多个安装是否也需要多个大小


    据我所知,APK及其解包部分(如DEX文件)是共享的。

    我知道我应该使用这些API,但我也想知道路径是什么。您知道每个用户的路径是否不同(在我提到的任何情况下)?还是操作系统在用户之间切换时,通过某种方式将它们设置为相同的路径来处理这个问题?此外,SD卡是受支持的(即使在v4.4上也是如此),应用程序可以写入其指定的路径,但同样,在这种情况下,多用户会发生什么情况?“应用程序大小”只是一个例子-它可以是APK大小、应用程序占用的内部/外部存储空间等@androiddeveloper:“我也想知道路径是什么”——它们没有文档记录,可能因Android操作系统版本和设备制造商而异。“您知道每个用户的路径(在我提到的任何情况下)是否不同吗?”--对于内部存储,知道。外部存储也位于不同的路径上,尽管它们将一些其他位置映射到它(例如,
    /sdcard
    )以供出错的开发人员使用。“在这种情况下,多用户会发生什么”——对不起,我没有尝试过Android 4.4
    getExternalFilesDirs()
    和多用户支持的交叉点。您回答的最后一个问题是关于SD卡,而不仅仅是外部存储(模拟存储)。我想知道它是如何工作的,因为所有的应用程序都可以从sd卡读取数据。我还想知道应用程序是否可以从(模拟的)外部存储器读取数据并查看其他用户的数据。@androiddeveloper:“我还想知道应用程序是否可以从(模拟的)外部存储器读取数据并查看其他用户的数据”--不,除非有bug。所以唯一缺少的问题是关于SD卡的(其余的如您所说受到保护),我认为大家都能读懂。你怎么认为?另外,您认为可以使用root访问这些文件吗?如果是,怎么做?