diff options
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java index af728887c917..1d4cfdc88ad5 100644 --- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java +++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java @@ -500,6 +500,20 @@ public class ApplicationsState { } } + /** + * To generate and cache the label description. + * + * @param entry contain the entries of an app + */ + public void ensureLabelDescription(AppEntry entry) { + if (entry.labelDescription != null) { + return; + } + synchronized (entry) { + entry.ensureLabelDescriptionLocked(mContext); + } + } + public void requestSize(String packageName, int userId) { if (DEBUG_LOCKING) Log.v(TAG, "requestSize about to acquire lock..."); synchronized (mEntriesMap) { @@ -1524,6 +1538,7 @@ public class ApplicationsState { public long size; public long internalSize; public long externalSize; + public String labelDescription; public boolean mounted; @@ -1616,6 +1631,24 @@ public class ApplicationsState { return ""; } } + + /** + * Get the label description which distinguishes a personal app from a work app for + * accessibility purpose. If the app is in a work profile, then add a "work" prefix to the + * app label. + * + * @param context The application context + */ + public void ensureLabelDescriptionLocked(Context context) { + final int userId = UserHandle.getUserId(this.info.uid); + if (UserManager.get(context).isManagedProfile(userId)) { + this.labelDescription = context.getString( + com.android.settingslib.R.string.accessibility_work_profile_app_description, + this.label); + } else { + this.labelDescription = this.label; + } + } } private static boolean hasFlag(int flags, int flag) { |