Addressing API council comments for UserManager.

bug:17390424

Change-Id: I498d2541289915cb7db16e5c3249ccc7a7dc5ee6
This commit is contained in:
Svetoslav
2014-09-04 15:39:54 -07:00
parent d3cc74cac2
commit c7d62f02b8
11 changed files with 246 additions and 183 deletions

View File

@@ -8843,6 +8843,9 @@ package android.content.pm {
method public abstract android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
method public abstract java.lang.String[] getSystemSharedLibraryNames();
method public abstract java.lang.CharSequence getText(java.lang.String, int, android.content.pm.ApplicationInfo);
method public abstract android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
method public abstract android.graphics.drawable.Drawable getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle);
method public abstract java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle);
method public abstract android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo);
method public abstract boolean hasSystemFeature(java.lang.String);
method public abstract boolean isSafeMode();
@@ -22465,9 +22468,6 @@ package android.os {
public class UserManager {
method public android.os.Bundle getApplicationRestrictions(java.lang.String);
method public android.graphics.drawable.Drawable getBadgedDrawableForUser(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
method public android.graphics.drawable.Drawable getBadgedIconForUser(android.graphics.drawable.Drawable, android.os.UserHandle);
method public java.lang.CharSequence getBadgedLabelForUser(java.lang.CharSequence, android.os.UserHandle);
method public long getSerialNumberForUser(android.os.UserHandle);
method public int getUserCount();
method public android.os.UserHandle getUserForSerialNumber(long);
@@ -29741,6 +29741,9 @@ package android.test.mock {
method public android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
method public java.lang.String[] getSystemSharedLibraryNames();
method public java.lang.CharSequence getText(java.lang.String, int, android.content.pm.ApplicationInfo);
method public android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
method public android.graphics.drawable.Drawable getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle);
method public java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle);
method public android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo);
method public boolean hasSystemFeature(java.lang.String);
method public boolean isSafeMode();

View File

@@ -30,6 +30,12 @@ package android.os {
method public void wakeUp(long);
}
public class UserManager {
method public android.graphics.drawable.Drawable getBadgedDrawableForUser(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
method public android.graphics.drawable.Drawable getBadgedIconForUser(android.graphics.drawable.Drawable, android.os.UserHandle);
method public java.lang.CharSequence getBadgedLabelForUser(java.lang.CharSequence, android.os.UserHandle);
}
}
package android.service.notification {

View File

@@ -45,14 +45,17 @@ import android.content.pm.PermissionInfo;
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.UserInfo;
import android.content.pm.VerificationParams;
import android.content.pm.VerifierDeviceIdentity;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.IBinder;
import android.os.Process;
import android.os.RemoteException;
import android.os.UserHandle;
@@ -864,6 +867,49 @@ final class ApplicationPackageManager extends PackageManager {
return getApplicationLogo(getApplicationInfo(packageName, 0));
}
@Override
public Drawable getUserBadgedIcon(Drawable icon, UserHandle user) {
final int badgeResId = getBadgeResIdForUser(user.getIdentifier());
if (badgeResId == 0) {
return icon;
}
Drawable badgeIcon = getDrawable("system", badgeResId, null);
return getBadgedDrawable(icon, badgeIcon, null, true);
}
@Override
public Drawable getUserBadgedDrawableForDensity(Drawable drawable, UserHandle user,
Rect badgeLocation, int badgeDensity) {
Drawable badgeDrawable = getUserBadgeForDensity(user, badgeDensity);
if (badgeDrawable == null) {
return drawable;
}
return getBadgedDrawable(drawable, badgeDrawable, badgeLocation, true);
}
@Override
public Drawable getUserBadgeForDensity(UserHandle user, int density) {
UserInfo userInfo = getUserIfProfile(user.getIdentifier());
if (userInfo != null && userInfo.isManagedProfile()) {
if (density <= 0) {
density = mContext.getResources().getDisplayMetrics().densityDpi;
}
return Resources.getSystem().getDrawableForDensity(
com.android.internal.R.drawable.ic_corp_badge, density);
}
return null;
}
@Override
public CharSequence getUserBadgedLabel(CharSequence label, UserHandle user) {
UserInfo userInfo = getUserIfProfile(user.getIdentifier());
if (userInfo != null && userInfo.isManagedProfile()) {
return Resources.getSystem().getString(
com.android.internal.R.string.managed_profile_label_badge, label);
}
return label;
}
@Override public Resources getResourcesForActivity(
ComponentName activityName) throws NameNotFoundException {
return getResourcesForApplication(
@@ -1647,8 +1693,79 @@ final class ApplicationPackageManager extends PackageManager {
if (dr == null) {
dr = itemInfo.loadDefaultIcon(this);
}
return getUserManager().getBadgedDrawableForUser(dr,
new UserHandle(mContext.getUserId()));
return getUserBadgedDrawableForDensity(dr, new UserHandle(mContext.getUserId()), null, 0);
}
private Drawable getBadgedDrawable(Drawable drawable, Drawable badgeDrawable,
Rect badgeLocation, boolean tryBadgeInPlace) {
final int badgedWidth = drawable.getIntrinsicWidth();
final int badgedHeight = drawable.getIntrinsicHeight();
final boolean canBadgeInPlace = tryBadgeInPlace
&& (drawable instanceof BitmapDrawable)
&& ((BitmapDrawable) drawable).getBitmap().isMutable();
final Bitmap bitmap;
if (canBadgeInPlace) {
bitmap = ((BitmapDrawable) drawable).getBitmap();
} else {
bitmap = Bitmap.createBitmap(badgedWidth, badgedHeight, Bitmap.Config.ARGB_8888);
}
Canvas canvas = new Canvas(bitmap);
if (!canBadgeInPlace) {
drawable.setBounds(0, 0, badgedWidth, badgedHeight);
drawable.draw(canvas);
}
if (badgeLocation != null) {
if (badgeLocation.left < 0 || badgeLocation.top < 0
|| badgeLocation.width() > badgedWidth || badgeLocation.height() > badgedHeight) {
throw new IllegalArgumentException("Badge location " + badgeLocation
+ " not in badged drawable bounds "
+ new Rect(0, 0, badgedWidth, badgedHeight));
}
badgeDrawable.setBounds(0, 0, badgeLocation.width(), badgeLocation.height());
canvas.save();
canvas.translate(badgeLocation.left, badgeLocation.top);
badgeDrawable.draw(canvas);
canvas.restore();
} else {
badgeDrawable.setBounds(0, 0, badgedWidth, badgedHeight);
badgeDrawable.draw(canvas);
}
if (!canBadgeInPlace) {
BitmapDrawable mergedDrawable = new BitmapDrawable(mContext.getResources(), bitmap);
if (drawable instanceof BitmapDrawable) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
mergedDrawable.setTargetDensity(bitmapDrawable.getBitmap().getDensity());
}
return mergedDrawable;
}
return drawable;
}
private int getBadgeResIdForUser(int userHandle) {
// Return the framework-provided badge.
UserInfo userInfo = getUserIfProfile(userHandle);
if (userInfo != null && userInfo.isManagedProfile()) {
return com.android.internal.R.drawable.ic_corp_icon_badge;
}
return 0;
}
private UserInfo getUserIfProfile(int userHandle) {
List<UserInfo> userProfiles = mUserManager.getProfiles(UserHandle.myUserId());
for (UserInfo user : userProfiles) {
if (user.id == userHandle) {
return user;
}
}
return null;
}
private final ContextImpl mContext;

View File

@@ -38,7 +38,6 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserManager;
import android.text.TextUtils;
import android.util.Log;
import android.util.MathUtils;
@@ -2581,8 +2580,8 @@ public class Notification implements Parcelable
private Drawable getProfileBadgeDrawable() {
// Note: This assumes that the current user can read the profile badge of the
// originating user.
UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
return userManager.getBadgeForUser(new UserHandle(mContext.getUserId()), 0);
return mContext.getPackageManager().getUserBadgeForDensity(
new UserHandle(mContext.getUserId()), 0);
}
private Bitmap getProfileBadge() {

View File

@@ -18,16 +18,10 @@ package android.content.pm;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Bitmap.Config;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.DisplayMetrics;
@@ -39,11 +33,9 @@ import android.util.Log;
* and badged icon for the activity.
*/
public class LauncherActivityInfo {
private static final boolean DEBUG = false;
private static final String TAG = "LauncherActivityInfo";
private final PackageManager mPm;
private final UserManager mUm;
private ActivityInfo mActivityInfo;
private ComponentName mComponentName;
@@ -68,7 +60,6 @@ public class LauncherActivityInfo {
LauncherActivityInfo(Context context) {
mPm = context.getPackageManager();
mUm = UserManager.get(context);
}
/**
@@ -179,7 +170,7 @@ public class LauncherActivityInfo {
}
if (originalIcon instanceof BitmapDrawable) {
return mUm.getBadgedIconForUser(originalIcon, mUser);
return mPm.getUserBadgedIcon(originalIcon, mUser);
} else {
Log.e(TAG, "Unable to create badged icon for " + mActivityInfo);
}

View File

@@ -31,6 +31,7 @@ import android.content.IntentSender;
import android.content.pm.PackageParser.PackageParserException;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
@@ -2881,6 +2882,79 @@ public abstract class PackageManager {
public abstract Drawable getApplicationLogo(String packageName)
throws NameNotFoundException;
/**
* If the target user is a managed profile of the calling user or the caller
* is itself a managed profile, then this returns a badged copy of the given
* icon to be able to distinguish it from the original icon. For badging an
* arbitrary drawable use {@link #getUserBadgedDrawableForDensity(
* android.graphics.drawable.Drawable, UserHandle, android.graphics.Rect, int)}.
* <p>
* If the original drawable is a BitmapDrawable and the backing bitmap is
* mutable as per {@link android.graphics.Bitmap#isMutable()}, the badging
* is performed in place and the original drawable is returned.
* </p>
*
* @param icon The icon to badge.
* @param user The target user.
* @return A drawable that combines the original icon and a badge as
* determined by the system.
*/
public abstract Drawable getUserBadgedIcon(Drawable icon, UserHandle user);
/**
* If the target user is a managed profile of the calling user or the caller
* is itself a managed profile, then this returns a badged copy of the given
* drawable allowing the user to distinguish it from the original drawable.
* The caller can specify the location in the bounds of the drawable to be
* badged where the badge should be applied as well as the density of the
* badge to be used.
* <p>
* If the original drawable is a BitmapDrawable and the backing bitmap is
* mutable as per {@link android.graphics.Bitmap#isMutable()}, the bading
* is performed in place and the original drawable is returned.
* </p>
*
* @param drawable The drawable to badge.
* @param user The target user.
* @param badgeLocation Where in the bounds of the badged drawable to place
* the badge. If not provided, the badge is applied on top of the entire
* drawable being badged.
* @param badgeDensity The optional desired density for the badge as per
* {@link android.util.DisplayMetrics#densityDpi}. If not provided,
* the density of the display is used.
* @return A drawable that combines the original drawable and a badge as
* determined by the system.
*/
public abstract Drawable getUserBadgedDrawableForDensity(Drawable drawable,
UserHandle user, Rect badgeLocation, int badgeDensity);
/**
* If the target user is a managed profile of the calling user or the caller
* is itself a managed profile, then this returns a drawable to use as a small
* icon to include in a view to distinguish it from the original icon.
*
* @param user The target user.
* @param density The optional desired density for the badge as per
* {@link android.util.DisplayMetrics#densityDpi}. If not provided
* the density of the current display is used.
* @return the drawable or null if no drawable is required.
* @hide
*/
public abstract Drawable getUserBadgeForDensity(UserHandle user, int density);
/**
* If the target user is a managed profile of the calling user or the caller
* is itself a managed profile, then this returns a copy of the label with
* badging for accessibility services like talkback. E.g. passing in "Email"
* and it might return "Work Email" for Email in the work profile.
*
* @param label The label to change.
* @param user The target user.
* @return A label that combines the original label and a badge as
* determined by the system.
*/
public abstract CharSequence getUserBadgedLabel(CharSequence label, UserHandle user);
/**
* Retrieve text from a package. This is a low-level API used by
* the various package manager info structures (such as

View File

@@ -22,10 +22,7 @@ import android.content.Context;
import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Bitmap.Config;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.provider.Settings;
import android.util.Log;
@@ -838,46 +835,10 @@ public class UserManager {
* @param user The target user.
* @return A drawable that combines the original icon and a badge as
* determined by the system.
* @removed
*/
public Drawable getBadgedIconForUser(Drawable icon, UserHandle user) {
final int badgeResId = getBadgeResIdForUser(user.getIdentifier());
if (badgeResId == 0) {
return icon;
}
Drawable badgeIcon = mContext.getPackageManager()
.getDrawable("system", badgeResId, null);
return getBadgedDrawable(icon, badgeIcon, null, true);
}
/**
* If the target user is a managed profile of the calling user or the caller
* is itself a managed profile, then this returns a badged copy of the given
* icon to be able to distinguish it from the original icon.
* <p>
* If the original drawable is not a BitmapDrawable, then the original
* drawable is returned.
* </p>
*
* @param icon The icon to badge.
* @param user The target user.
* @return A drawable that combines the original icon and a badge as
* determined by the system.
*
* @deprecation Use {@link #getBadgedIconForUser(
* android.graphics.drawable.Drawable, UserHandle)}
*
* @hide
*/
@Deprecated
public Drawable getBadgedDrawableForUser(Drawable icon, UserHandle user) {
int badgeResId = getBadgeResIdForUser(user.getIdentifier());
if (badgeResId == 0) {
return icon;
} else {
Drawable badgeIcon = mContext.getPackageManager()
.getDrawable("system", badgeResId, null);
return getBadgedDrawable(icon, badgeIcon, null, false);
}
return mContext.getPackageManager().getUserBadgedIcon(icon, user);
}
/**
@@ -903,14 +864,12 @@ public class UserManager {
* the density of the display is used.
* @return A drawable that combines the original drawable and a badge as
* determined by the system.
* @removed
*/
public Drawable getBadgedDrawableForUser(Drawable badgedDrawable, UserHandle user,
Rect badgeLocation, int badgeDensity) {
Drawable badgeDrawable = getBadgeForUser(user, badgeDensity);
if (badgeDrawable == null) {
return badgedDrawable;
}
return getBadgedDrawable(badgedDrawable, badgeDrawable, badgeLocation, true);
return mContext.getPackageManager().getUserBadgedDrawableForDensity(badgedDrawable, user,
badgeLocation, badgeDensity);
}
/**
@@ -923,114 +882,10 @@ public class UserManager {
* @param user The target user.
* @return A label that combines the original label and a badge as
* determined by the system.
* @removed
*/
public CharSequence getBadgedLabelForUser(CharSequence label, UserHandle user) {
UserInfo userInfo = getUserIfProfile(user.getIdentifier());
if (userInfo != null && userInfo.isManagedProfile()) {
return Resources.getSystem().getString(
R.string.managed_profile_label_badge, label);
}
return label;
}
/**
* If the target user is a managed profile of the calling user or the caller
* is itself a managed profile, then this returns a drawable to use as a small
* icon to include in a view to distinguish it from the original icon.
*
* @param user The target user.
* @param density The optional desired density for the badge as per
* {@link android.util.DisplayMetrics#densityDpi}. If not provided
* the density of the current display is used.
* @return the drawable or null if no drawable is required.
* @hide
*/
public Drawable getBadgeForUser(UserHandle user, int density) {
UserInfo userInfo = getUserIfProfile(user.getIdentifier());
if (userInfo != null && userInfo.isManagedProfile()) {
if (density <= 0) {
density = mContext.getResources().getDisplayMetrics().densityDpi;
}
return Resources.getSystem().getDrawableForDensity(
com.android.internal.R.drawable.ic_corp_badge, density);
}
return null;
}
private int getBadgeResIdForUser(int userHandle) {
// Return the framework-provided badge.
UserInfo userInfo = getUserIfProfile(userHandle);
if (userInfo != null && userInfo.isManagedProfile()) {
return com.android.internal.R.drawable.ic_corp_icon_badge;
}
return 0;
}
/**
* @return UserInfo for userHandle if it exists and is a profile of the current
* user or null.
*/
private UserInfo getUserIfProfile(int userHandle) {
List<UserInfo> userProfiles = getProfiles(getUserHandle());
for (UserInfo user : userProfiles) {
if (user.id == userHandle) {
return user;
}
}
return null;
}
private Drawable getBadgedDrawable(Drawable badgedDrawable, Drawable badgeDrawable,
Rect badgeLocation, boolean tryBadgeInPlace) {
final int badgedWidth = badgedDrawable.getIntrinsicWidth();
final int badgedHeight = badgedDrawable.getIntrinsicHeight();
final boolean canBadgeInPlace = tryBadgeInPlace
&& (badgedDrawable instanceof BitmapDrawable)
&& ((BitmapDrawable) badgedDrawable).getBitmap().isMutable();
final Bitmap bitmap;
if (canBadgeInPlace) {
bitmap = ((BitmapDrawable) badgedDrawable).getBitmap();
} else {
bitmap = Bitmap.createBitmap(badgedWidth, badgedHeight, Config.ARGB_8888);
}
Canvas canvas = new Canvas(bitmap);
if (!canBadgeInPlace) {
badgedDrawable.setBounds(0, 0, badgedWidth, badgedHeight);
badgedDrawable.draw(canvas);
}
if (badgeLocation != null) {
if (badgeLocation.left < 0 || badgeLocation.top < 0
|| badgeLocation.width() > badgedWidth || badgeLocation.height() > badgedHeight) {
throw new IllegalArgumentException("Badge location " + badgeLocation
+ " not in badged drawable bounds "
+ new Rect(0, 0, badgedWidth, badgedHeight));
}
badgeDrawable.setBounds(0, 0, badgeLocation.width(), badgeLocation.height());
canvas.save();
canvas.translate(badgeLocation.left, badgeLocation.top);
badgeDrawable.draw(canvas);
canvas.restore();
} else {
badgeDrawable.setBounds(0, 0, badgedWidth, badgedHeight);
badgeDrawable.draw(canvas);
}
if (!canBadgeInPlace) {
BitmapDrawable mergedDrawable = new BitmapDrawable(mContext.getResources(), bitmap);
if (badgedDrawable instanceof BitmapDrawable) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) badgedDrawable;
mergedDrawable.setTargetDensity(bitmapDrawable.getBitmap().getDensity());
}
return mergedDrawable;
}
return badgedDrawable;
return mContext.getPackageManager().getUserBadgedLabel(label, user);
}
/**

View File

@@ -34,14 +34,12 @@ import android.os.Handler;
import android.os.Process;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import com.android.systemui.R;
import com.android.systemui.recents.misc.SystemServicesProxy;
import com.android.systemui.recents.misc.Utilities;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
import java.util.ArrayList;
@@ -205,8 +203,8 @@ public class RecentTasksLoader implements View.OnTouchListener {
Drawable icon = getFullResIcon(td.resolveInfo, pm);
if (td.userId != UserHandle.myUserId()) {
// Need to badge the icon
final UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
icon = um.getBadgedDrawableForUser(icon, new UserHandle(td.userId));
icon = mContext.getPackageManager().getUserBadgedDrawableForDensity(icon,
new UserHandle(td.userId), null, 0);
}
if (DEBUG) Log.v(TAG, "Loaded bitmap for task "
+ td + ": " + thumbnail);

View File

@@ -49,7 +49,6 @@ import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.util.Log;
import android.util.Pair;
@@ -79,7 +78,6 @@ public class SystemServicesProxy {
AppWidgetManager mAwm;
PackageManager mPm;
IPackageManager mIpm;
UserManager mUm;
SearchManager mSm;
WindowManager mWm;
Display mDisplay;
@@ -103,7 +101,6 @@ public class SystemServicesProxy {
mIam = ActivityManagerNative.getDefault();
mAwm = AppWidgetManager.getInstance(context);
mPm = context.getPackageManager();
mUm = (UserManager) context.getSystemService(Context.USER_SERVICE);
mIpm = AppGlobals.getPackageManager();
mSm = (SearchManager) context.getSystemService(Context.SEARCH_SERVICE);
mWm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
@@ -343,7 +340,7 @@ public class SystemServicesProxy {
* necessary.
*/
public Drawable getActivityIcon(ActivityInfo info, int userId) {
if (mPm == null || mUm == null) return null;
if (mPm == null) return null;
// If we are mocking, then return a mock label
if (Constants.DebugFlags.App.EnableSystemServicesProxy) {
@@ -359,7 +356,7 @@ public class SystemServicesProxy {
*/
public Drawable getBadgedIcon(Drawable icon, int userId) {
if (userId != UserHandle.myUserId()) {
icon = mUm.getBadgedDrawableForUser(icon, new UserHandle(userId));
icon = mPm.getUserBadgedDrawableForDensity(icon, new UserHandle(userId), null, 0);
}
return icon;
}

View File

@@ -1358,8 +1358,8 @@ public abstract class BaseStatusBar extends SystemUI implements
}
if (profileBadge != null) {
Drawable profileDrawable
= mUserManager.getBadgeForUser(entry.notification.getUser(), 0);
Drawable profileDrawable = mContext.getPackageManager().getUserBadgeForDensity(
entry.notification.getUser(), 0);
if (profileDrawable != null) {
profileBadge.setImageDrawable(profileDrawable);
profileBadge.setVisibility(View.VISIBLE);

View File

@@ -46,7 +46,7 @@ import android.content.pm.VerificationParams;
import android.content.pm.VerifierDeviceIdentity;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.UserHandle;
@@ -402,6 +402,29 @@ public class MockPackageManager extends PackageManager {
throw new UnsupportedOperationException();
}
@Override
public Drawable getUserBadgedIcon(Drawable icon, UserHandle user) {
throw new UnsupportedOperationException();
}
@Override
public Drawable getUserBadgedDrawableForDensity(Drawable drawable, UserHandle user,
Rect badgeLocation,
int badgeDensity) {
throw new UnsupportedOperationException();
}
/** @hide */
@Override
public Drawable getUserBadgeForDensity(UserHandle user, int density) {
throw new UnsupportedOperationException();
}
@Override
public CharSequence getUserBadgedLabel(CharSequence label, UserHandle user) {
throw new UnsupportedOperationException();
}
@Override
public CharSequence getText(String packageName, int resid, ApplicationInfo appInfo) {
throw new UnsupportedOperationException();