/storage/emulated/0/Pictures中的“0”是什么意思?

来源:互联网 发布:unity3d导入模型 编辑:程序博客网 时间:2024/05/17 15:03

工作中,遇到一点问题,自己简单梳理一下。就是一个系统中,系统服务只会有一个,不同的用户共用一个系统服务,不像一般的应用程序,不同的用户启动的应用程序会有多个,用uid区别开,至此也解开了对一个一直有留意到,却未曾深究的问题,为什么调用获取系统公共图片的路径时,

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
得到的绝对路径为/storage/emulated/0/Pictures,这之间的0代表着什么含义呢?
这其实就是一个uid的区别,不同用户的数据存储空间以此相互分隔。
如何进行用户识别?
ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);am.getCurrentUser();   //默认用户 =0;  

Android 4.2以后,提供了对多用户的支持,即同一部手机上可以有不同的用户身份,有不同的访问权限,但局限性比较明显,就同我们Linux用户切换一样,需要重新登录用户,初始化另一个用户环境,比较直观的感受就是重新切换一个桌面,比较费时,消耗资源。

基于多用户可以实现很多有意思的事情,比如老人模式,儿童模式,绿色模式等等,实质上就是进行一个用户的切换,而不同用户配置不同的权限,分配不同的资源。但由于切换用户的时间,资源等成本过高,一般需要用动画等进行过渡,避免用户体验不佳。很多时候我们并不需要如此重量级的解决方案,因此,谷歌有提供了另一个概念,叫Profile,以一种更轻量的方式实现隔离的效果。

目前,应用多开,保险箱,隐私空间等大都再此基础上进行设计。

阅读全文
0 0
原创粉丝点击