多用户感知型Android应用中SharedPreferences的可用性问题
假设某Android应用并非单例应用(android:singleUser="false"),且已在特定用户身份下以MODE_PRIVATE模式存储了部分SharedPreferences,当设备发生用户切换后,当前登录用户无法访问该应用为其他用户存储的SharedPreferences,具体原因如下:
- Android多用户机制会为每个用户创建独立的应用数据沙箱,非单例应用会在每个用户空间内运行独立实例,各自的存储数据(包括SharedPreferences)完全隔离,互相不可直接访问。
MODE_PRIVATE是SharedPreferences的私有访问模式,本身就限制仅当前应用的当前用户进程可读写该存储文件,结合多用户的沙箱隔离规则,跨用户访问其他用户的私有SharedPreferences会被系统权限拦截。- 即便应用开启了多用户支持(
android:singleUser="false"),每个用户对应的应用实例仅能操作自身用户空间内的存储资源,无法突破系统的用户隔离边界访问其他用户的私有数据。
内容的提问来源于stack exchange,提问作者Manoj Kumar S
相关产品推荐
相关产品推荐

