@@ -196,14 +196,25 @@ public ParcelFileDescriptor setUserIcon(int userId) {
196196 synchronized (mPackagesLock ) {
197197 UserInfo info = mUsers .get (userId );
198198 if (info == null ) return null ;
199- ParcelFileDescriptor fd = updateIconBitmapLocked (info );
199+ ParcelFileDescriptor fd = openIconBitmapLocked (info , true /* write */ );
200200 if (fd != null ) {
201201 writeUserLocked (info );
202202 }
203203 return fd ;
204204 }
205205 }
206206
207+ @ Override
208+ public ParcelFileDescriptor getUserIcon (int userId ) {
209+ checkManageUsersPermission ("read users" );
210+ synchronized (mPackagesLock ) {
211+ UserInfo info = mUsers .get (userId );
212+ if (info == null || info .iconPath == null ) return null ;
213+ ParcelFileDescriptor fd = openIconBitmapLocked (info , false /* read */ );
214+ return fd ;
215+ }
216+ }
217+
207218 @ Override
208219 public void setGuestEnabled (boolean enable ) {
209220 checkManageUsersPermission ("enable guest users" );
@@ -278,7 +289,7 @@ private static final void checkManageUsersPermission(String message) {
278289 }
279290 }
280291
281- private ParcelFileDescriptor updateIconBitmapLocked (UserInfo info ) {
292+ private ParcelFileDescriptor openIconBitmapLocked (UserInfo info , boolean toWrite ) {
282293 try {
283294 File dir = new File (mUsersDir , Integer .toString (info .id ));
284295 File file = new File (dir , USER_PHOTO_FILENAME );
@@ -290,8 +301,10 @@ private ParcelFileDescriptor updateIconBitmapLocked(UserInfo info) {
290301 -1 , -1 );
291302 }
292303 ParcelFileDescriptor fd = ParcelFileDescriptor .open (file ,
293- MODE_CREATE |MODE_READ_WRITE );
294- info .iconPath = file .getAbsolutePath ();
304+ toWrite ? MODE_CREATE |MODE_READ_WRITE : MODE_READ_WRITE );
305+ if (toWrite ) {
306+ info .iconPath = file .getAbsolutePath ();
307+ }
295308 return fd ;
296309 } catch (FileNotFoundException e ) {
297310 Slog .w (LOG_TAG , "Error setting photo for user " , e );
0 commit comments