从版本4.2开始,Android支持多用户(链接here和here)。
每个用户都有自己的应用,只有用户可以看到他们的私人数据。
每个用户的数据封装如何在路径和访问文件方面起作用?
我的意思是,每个用户的路径是什么:
我猜用户可以看到存储在sd卡上的数据属于其他用户,但模拟外部存储怎么办?他们也可以写其他用户'文件还是只读它们?
每个用户是否自动获得自己的特殊路径?或者开发人员应该处理这个吗?
如果开发人员需要处理它,应该使用什么作为用户的ID?
文档说:
无论您使用哪种API来保存给定用户的数据, 以其他用户身份运行时,无法访问这些数据。
但是,所有这些都假设您将API用于自己的路径。应用可以通过转到其他路径来绕过这个吗?
应用程序可以在同一设备上查询自身的每个安装内容?他们可以获得其他用户的应用程序的大小吗?他们甚至可以获得其他用户的应用列表吗?
同一个应用的多重安装是否也需要多个尺寸?
答案 0 :(得分:3)
每个用户的路径是什么
如果你在乎,你做错了。使用Android SDK API确定基目录,并从那里开始工作。所以,例如:
getFilesDir()
将返回当前用户的内部存储空间getExternalFilesDir()
并且Environment
上的方法将为当前用户返回正确的外部存储位置我猜用户可以看到存储在属于其他用户的SD卡上的数据
通常是outside the bounds of the Android SDK。
但仿真外部存储怎么办?
每个用户都有自己的空间。
他们还能写其他用户的文件还是只读它们?
两者都没有,除非设备中存在错误。
每个用户是否自动获得自己的特殊路径?
是的,如果您使用Android SDK API来确定基本目录。
应用程序可以通过转到其他路径以某种方式绕过这个吗?
不,因为他们既没有读取也没有写入权限,禁止出现错误。
应用程序可以在同一设备上查询自身的每个安装?
AFAIK,什么都没有。从应用程序的角度来看,在一台设备上安装多个设备的事实与在多个设备上安装无法区分。
他们可以获得其他用户的应用大小吗?
我不知道“应用程序的大小”是什么意思,抱歉。
他们甚至可以获得其他用户的应用列表吗?
这是一个很好的问题。我没有尝试PackageManager
来查看二级用户运行的应用程序使用它时所暴露的内容。从理论上讲,它应该只报告当前用户可用的内容,特别是在Android的受限配置文件中。
同一个应用的多重安装是否也需要多个尺寸?
根据我的理解,APK及其解包的部分(例如,DEX文件)是共享的。