summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SettingsLib/Android.bp1
-rw-r--r--packages/SettingsLib/Utils/Android.bp15
-rw-r--r--packages/SettingsLib/Utils/AndroidManifest.xml23
-rw-r--r--packages/SettingsLib/Utils/res/values/strings.xml20
-rw-r--r--packages/SettingsLib/Utils/src/com/android/settingslib/utils/applications/AppUtils.java59
-rw-r--r--packages/SettingsLib/res/values/strings.xml3
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java20
7 files changed, 122 insertions, 19 deletions
diff --git a/packages/SettingsLib/Android.bp b/packages/SettingsLib/Android.bp
index ac4e1ea11dae..5afe2f3d2efc 100644
--- a/packages/SettingsLib/Android.bp
+++ b/packages/SettingsLib/Android.bp
@@ -50,6 +50,7 @@ java_defaults {
"SettingsLibAdaptiveIcon",
"SettingsLibRadioButtonPreference",
"SettingsLibDisplayDensityUtils",
+ "SettingsLibUtils",
],
}
diff --git a/packages/SettingsLib/Utils/Android.bp b/packages/SettingsLib/Utils/Android.bp
new file mode 100644
index 000000000000..c5f0ee6c939c
--- /dev/null
+++ b/packages/SettingsLib/Utils/Android.bp
@@ -0,0 +1,15 @@
+android_library {
+ name: "SettingsLibUtils",
+
+ srcs: ["src/**/*.java"],
+ resource_dirs: ["res"],
+
+ sdk_version: "system_current",
+ min_sdk_version: "21",
+
+ apex_available: [
+
+ "//apex_available:platform",
+ "com.android.permission",
+ ],
+}
diff --git a/packages/SettingsLib/Utils/AndroidManifest.xml b/packages/SettingsLib/Utils/AndroidManifest.xml
new file mode 100644
index 000000000000..fd89676ab6d7
--- /dev/null
+++ b/packages/SettingsLib/Utils/AndroidManifest.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.settingslib.utils">
+
+ <uses-sdk android:minSdkVersion="21" />
+
+</manifest>
diff --git a/packages/SettingsLib/Utils/res/values/strings.xml b/packages/SettingsLib/Utils/res/values/strings.xml
new file mode 100644
index 000000000000..035e7f230d60
--- /dev/null
+++ b/packages/SettingsLib/Utils/res/values/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- A content description for work profile app [CHAR LIMIT=35] -->
+ <string name="accessibility_work_profile_app_description">Work <xliff:g id="app_name" example="Camera">%s</xliff:g></string>
+</resources> \ No newline at end of file
diff --git a/packages/SettingsLib/Utils/src/com/android/settingslib/utils/applications/AppUtils.java b/packages/SettingsLib/Utils/src/com/android/settingslib/utils/applications/AppUtils.java
new file mode 100644
index 000000000000..6125b8509fcf
--- /dev/null
+++ b/packages/SettingsLib/Utils/src/com/android/settingslib/utils/applications/AppUtils.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.utils.applications;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.UserManager;
+import android.util.Log;
+
+import com.android.settingslib.utils.R;
+
+public class AppUtils {
+
+ private static final String TAG = AppUtils.class.getSimpleName();
+
+ /** Returns the label for a given package. */
+ public static CharSequence getApplicationLabel(
+ PackageManager packageManager, String packageName) {
+ try {
+ final ApplicationInfo appInfo =
+ packageManager.getApplicationInfo(
+ packageName,
+ PackageManager.MATCH_DISABLED_COMPONENTS
+ | PackageManager.MATCH_ANY_USER);
+ return appInfo.loadLabel(packageManager);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.w(TAG, "Unable to find info for package: " + packageName);
+ }
+ return null;
+ }
+
+ /**
+ * Returns a content description of an app name 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 name.
+ */
+ public static String getAppContentDescription(Context context, String packageName,
+ int userId) {
+ final CharSequence appLabel = getApplicationLabel(context.getPackageManager(), packageName);
+ return context.getSystemService(UserManager.class).isManagedProfile(userId)
+ ? context.getString(R.string.accessibility_work_profile_app_description, appLabel)
+ : appLabel.toString();
+ }
+}
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 9c7bdbd5b927..8e8368f9bc62 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -1374,9 +1374,6 @@
<!-- Developer setting dialog prompting the user to reboot after changing the app freezer setting [CHAR LIMIT=NONE]-->
<string name="cached_apps_freezer_reboot_dialog_text">Your device must be rebooted for this change to apply. Reboot now or cancel.</string>
- <!-- A content description for work profile app [CHAR LIMIT=35] -->
- <string name="accessibility_work_profile_app_description">Work <xliff:g id="app_name" example="Camera">%s</xliff:g></string>
-
<!-- Name of the 3.5mm and usb audio device. [CHAR LIMIT=50] -->
<string name="media_transfer_wired_usb_device_name">Wired headphone</string>
</resources>
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java b/packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java
index b1f2a397bde6..a6202956efa5 100644
--- a/packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java
@@ -26,7 +26,6 @@ import android.hardware.usb.IUsbManager;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
-import android.os.UserManager;
import android.util.Log;
import com.android.settingslib.R;
@@ -112,17 +111,8 @@ public class AppUtils {
/** Returns the label for a given package. */
public static CharSequence getApplicationLabel(
PackageManager packageManager, String packageName) {
- try {
- final ApplicationInfo appInfo =
- packageManager.getApplicationInfo(
- packageName,
- PackageManager.MATCH_DISABLED_COMPONENTS
- | PackageManager.MATCH_ANY_USER);
- return appInfo.loadLabel(packageManager);
- } catch (PackageManager.NameNotFoundException e) {
- Log.w(TAG, "Unable to find info for package: " + packageName);
- }
- return null;
+ return com.android.settingslib.utils.applications.AppUtils
+ .getApplicationLabel(packageManager, packageName);
}
/**
@@ -160,9 +150,7 @@ public class AppUtils {
*/
public static String getAppContentDescription(Context context, String packageName,
int userId) {
- final CharSequence appLabel = getApplicationLabel(context.getPackageManager(), packageName);
- return UserManager.get(context).isManagedProfile(userId)
- ? context.getString(R.string.accessibility_work_profile_app_description, appLabel)
- : appLabel.toString();
+ return com.android.settingslib.utils.applications.AppUtils.getAppContentDescription(context,
+ packageName, userId);
}
}