Add UserManager.getUserIcon()

So that we don't abuse the setUserIcon() for reading. So the new method won't try
to create the file, only return it if it exists.

Change-Id: I7a81d3f1b29d14d37e71f531744ce39f21d827ac
diff --git a/services/java/com/android/server/pm/UserManagerService.java b/services/java/com/android/server/pm/UserManagerService.java
index a58c4ea..914ff67 100644
--- a/services/java/com/android/server/pm/UserManagerService.java
+++ b/services/java/com/android/server/pm/UserManagerService.java
@@ -196,7 +196,7 @@
         synchronized (mPackagesLock) {
             UserInfo info = mUsers.get(userId);
             if (info == null) return null;
-            ParcelFileDescriptor fd = updateIconBitmapLocked(info);
+            ParcelFileDescriptor fd = openIconBitmapLocked(info, true /* write */);
             if (fd != null) {
                 writeUserLocked(info);
             }
@@ -205,6 +205,17 @@
     }
 
     @Override
+    public ParcelFileDescriptor getUserIcon(int userId) {
+        checkManageUsersPermission("read users");
+        synchronized (mPackagesLock) {
+            UserInfo info = mUsers.get(userId);
+            if (info == null || info.iconPath == null) return null;
+            ParcelFileDescriptor fd = openIconBitmapLocked(info, false /* read */);
+            return fd;
+        }
+    }
+
+    @Override
     public void setGuestEnabled(boolean enable) {
         checkManageUsersPermission("enable guest users");
         synchronized (mPackagesLock) {
@@ -278,7 +289,7 @@
         }
     }
 
-    private ParcelFileDescriptor updateIconBitmapLocked(UserInfo info) {
+    private ParcelFileDescriptor openIconBitmapLocked(UserInfo info, boolean toWrite) {
         try {
             File dir = new File(mUsersDir, Integer.toString(info.id));
             File file = new File(dir, USER_PHOTO_FILENAME);
@@ -290,8 +301,10 @@
                         -1, -1);
             }
             ParcelFileDescriptor fd = ParcelFileDescriptor.open(file,
-                    MODE_CREATE|MODE_READ_WRITE);
-            info.iconPath = file.getAbsolutePath();
+                    toWrite ? MODE_CREATE|MODE_READ_WRITE : MODE_READ_WRITE);
+            if (toWrite) {
+                info.iconPath = file.getAbsolutePath();
+            }
             return fd;
         } catch (FileNotFoundException e) {
             Slog.w(LOG_TAG, "Error setting photo for user ", e);