多用户
Android现在允许平板等可共享的设备,拥有多个用户空间。设备上的每个用户都有他或她自己的帐户、应用程序、系统设置、文件,以及任何其他用户相关的数据集。
作为应用程序开发人员,您毋须为多用户模式做任何额外工作。不管设备上有多少用户,特定用户所用的应用数据都是跟其它用户分开的。系统会跟踪用户运行的应用数据的归属,并限定您的应用仅能访问所属用户的数据,而无法访问其它用户的数据。
多用户环境中的数据保存
当您的应用程序保存用户喜好,创建数据库,或向用户的内部或外部存储空间写入文件时,这些数据仅能被当前运行此应用的用户所访问。
为确保您的应用在多用户环境中表现正常,请不要对应用内的路径或外部存储路径使用硬编码路径,而是要使用相应的API。
访问内部存储时,使用getFilesDir()、getCacheDir()、和openFileOutput()方法。
访问外部存储时,使用getExternalFilesDir()或getExternalStoragePublicDirectory()。
无论您使用这些API中的哪个,它们保存的数据都无法被其它用户访问。从应用程序的角度来看,每个用户都运行在完全独立的设备上。
多用户环境中的用户识别
如果您的应用要区分用户以进行搜集分析或创建其他帐户联系,您都应当以下遵循建议方法来进行识别。无论有多少用户在设备上安装了您的应用,您的应用在首次运行时都要生成唯一的UUID,您可以用这ID来对每个用户进行甄别。或者,您也可以保存从您的服务器获取的本地令牌或由谷歌云消息服务所提供的注册ID来进行甄别。
要注意的是,如果您的应用使用硬件设备标识符(如WiFi的MAC地址,序列号,或ANDROID_ID数),它们会为每个用户提供相同的值,因为这些标识符依赖的硬件,而不是用户。更不用说使用这些标识符还会引起各种各样的其它问题。