xref: /aosp_15_r20/frameworks/base/packages/SystemUI/docs/user-file-manager.md (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1*d57664e9SAndroid Build Coastguard Worker# UserFileManager
2*d57664e9SAndroid Build Coastguard Worker
3*d57664e9SAndroid Build Coastguard WorkerThis class is used to generate file paths and SharedPreferences that is compatible for specific OS
4*d57664e9SAndroid Build Coastguard Workerusers in SystemUI. Due to constraints in SystemUI, we can only read/write files as the system user.
5*d57664e9SAndroid Build Coastguard WorkerTherefore, for secondary users, we want to store secondary user specific files into the system user
6*d57664e9SAndroid Build Coastguard Workerdirectory.
7*d57664e9SAndroid Build Coastguard Worker
8*d57664e9SAndroid Build Coastguard Worker
9*d57664e9SAndroid Build Coastguard Worker## Usages
10*d57664e9SAndroid Build Coastguard Worker
11*d57664e9SAndroid Build Coastguard WorkerInject UserFileManager into your class.
12*d57664e9SAndroid Build Coastguard Worker
13*d57664e9SAndroid Build Coastguard Worker### fun getFile(fileName: String, userId: Int): File
14*d57664e9SAndroid Build Coastguard WorkerAdd a file name and user id. You can retrieve the current user id from UserTracker. This will
15*d57664e9SAndroid Build Coastguard Workerreturn a java.io File object that contains the file path to write/read to.
16*d57664e9SAndroid Build Coastguard Worker
17*d57664e9SAndroid Build Coastguard Workeri.e. `fileManager.getFile("example.xml", userTracker.userId)`
18*d57664e9SAndroid Build Coastguard Worker
19*d57664e9SAndroid Build Coastguard Worker### fun getSharedPreferences(fileName: String, mode: Int, userId: Int): SharedPreferences
20*d57664e9SAndroid Build Coastguard WorkerAdd a file name, user id, and PreferencesMode. You can retrieve the current user id from
21*d57664e9SAndroid Build Coastguard WorkerUserTracker. This returns SharedPreferences object that is tied to the specific user. Note that if
22*d57664e9SAndroid Build Coastguard Workerthe SharedPreferences file does not exist, one will be created automatically. See
23*d57664e9SAndroid Build Coastguard Worker[SharedPreferences documentation](https://developer.android.com/reference/android/content/Context#getSharedPreferences(java.lang.String,%20int))
24*d57664e9SAndroid Build Coastguard Workerfor more details.
25*d57664e9SAndroid Build Coastguard Worker
26*d57664e9SAndroid Build Coastguard Workeri.e. `fileManager.getSharedPreferences("prefs.xml", userTracker.userId, 0)`
27*d57664e9SAndroid Build Coastguard Worker
28*d57664e9SAndroid Build Coastguard Worker## Handling User Removal
29*d57664e9SAndroid Build Coastguard Worker
30*d57664e9SAndroid Build Coastguard WorkerThis class will listen for Intent.ACTION_USER_REMOVED and remove directories that no longer
31*d57664e9SAndroid Build Coastguard Workercorresponding to active users. Additionally, upon start up, the class will run the same query for
32*d57664e9SAndroid Build Coastguard Workerdeletion to ensure that there is no stale data.
33*d57664e9SAndroid Build Coastguard Worker
34