diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/os/IUserManager.aidl | 3 | ||||
| -rw-r--r-- | core/java/android/os/UserManager.java | 16 |
2 files changed, 16 insertions, 3 deletions
diff --git a/core/java/android/os/IUserManager.aidl b/core/java/android/os/IUserManager.aidl index b5295fb24f63..236003b85e80 100644 --- a/core/java/android/os/IUserManager.aidl +++ b/core/java/android/os/IUserManager.aidl @@ -21,6 +21,7 @@ import android.os.Bundle; import android.content.pm.UserInfo; import android.content.RestrictionEntry; import android.graphics.Bitmap; +import android.os.ParcelFileDescriptor; /** * {@hide} @@ -32,7 +33,7 @@ interface IUserManager { boolean removeUser(int userHandle); void setUserName(int userHandle, String name); void setUserIcon(int userHandle, in Bitmap icon); - Bitmap getUserIcon(int userHandle); + ParcelFileDescriptor getUserIcon(int userHandle); List<UserInfo> getUsers(boolean excludeDying); List<UserInfo> getProfiles(int userHandle, boolean enabledOnly); UserInfo getProfileParent(int userHandle); diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java index d124a499f66d..60ab05c98a2d 100644 --- a/core/java/android/os/UserManager.java +++ b/core/java/android/os/UserManager.java @@ -22,6 +22,7 @@ import android.content.Context; import android.content.pm.UserInfo; import android.content.res.Resources; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.provider.Settings; @@ -30,6 +31,7 @@ import android.view.WindowManager.LayoutParams; import com.android.internal.R; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -1083,11 +1085,21 @@ public class UserManager { */ public Bitmap getUserIcon(int userHandle) { try { - return mService.getUserIcon(userHandle); + ParcelFileDescriptor fd = mService.getUserIcon(userHandle); + if (fd != null) { + try { + return BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor()); + } finally { + try { + fd.close(); + } catch (IOException e) { + } + } + } } catch (RemoteException re) { Log.w(TAG, "Could not get the user icon ", re); - return null; } + return null; } /** |
