summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/layout/item_photo_grid.xml1
-rw-r--r--src/com/android/documentsui/ProfileTabs.java13
-rw-r--r--src/com/android/documentsui/dirlist/DocumentHolder.java22
-rw-r--r--src/com/android/documentsui/dirlist/GridDirectoryHolder.java21
-rw-r--r--src/com/android/documentsui/dirlist/GridDocumentHolder.java21
-rw-r--r--src/com/android/documentsui/dirlist/GridPhotoHolder.java23
-rw-r--r--src/com/android/documentsui/dirlist/ListDocumentHolder.java20
-rw-r--r--src/com/android/documentsui/dirlist/Message.java35
-rw-r--r--src/com/android/documentsui/sidebar/UserItemsCombiner.java7
-rw-r--r--src/com/android/documentsui/util/VersionUtils.java8
10 files changed, 155 insertions, 16 deletions
diff --git a/res/layout/item_photo_grid.xml b/res/layout/item_photo_grid.xml
index 562ebd32a..5cf685004 100644
--- a/res/layout/item_photo_grid.xml
+++ b/res/layout/item_photo_grid.xml
@@ -112,6 +112,7 @@
android:pointerIcon="hand">
<ImageView
+ android:id="@+id/icon_id"
android:layout_height="@dimen/briefcase_icon_size_photo"
android:layout_width="@dimen/briefcase_icon_size_photo"
android:src="@drawable/ic_briefcase_white"
diff --git a/src/com/android/documentsui/ProfileTabs.java b/src/com/android/documentsui/ProfileTabs.java
index 38307f202..53f184717 100644
--- a/src/com/android/documentsui/ProfileTabs.java
+++ b/src/com/android/documentsui/ProfileTabs.java
@@ -163,10 +163,15 @@ public class ProfileTabs implements ProfileTabsAddons {
}
private String getEnterpriseString(String updatableStringId, int defaultStringId) {
- DevicePolicyManager dpm = mTabsContainer.getContext().getSystemService(
- DevicePolicyManager.class);
- return dpm.getString(
- updatableStringId, () -> mTabsContainer.getContext().getString(defaultStringId));
+ if (VersionUtils.isAtLeastT()) {
+ DevicePolicyManager dpm = mTabsContainer.getContext().getSystemService(
+ DevicePolicyManager.class);
+ return dpm.getString(
+ updatableStringId,
+ () -> mTabsContainer.getContext().getString(defaultStringId));
+ } else {
+ return mTabsContainer.getContext().getString(defaultStringId);
+ }
}
/**
diff --git a/src/com/android/documentsui/dirlist/DocumentHolder.java b/src/com/android/documentsui/dirlist/DocumentHolder.java
index b5df0c463..6e6e8acf0 100644
--- a/src/com/android/documentsui/dirlist/DocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/DocumentHolder.java
@@ -37,6 +37,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.android.documentsui.R;
import com.android.documentsui.base.Shared;
import com.android.documentsui.base.State;
+import com.android.documentsui.util.VersionUtils;
import java.util.function.Function;
@@ -177,13 +178,20 @@ public abstract class DocumentHolder
}
protected String getPreviewIconContentDescription(boolean isWorkProfile, String fileName) {
- DevicePolicyManager dpm = itemView.getContext().getSystemService(DevicePolicyManager.class);
- String updatableStringId = isWorkProfile ? PREVIEW_WORK_FILE_ACCESSIBILITY : UNDEFINED;
- int defaultStringId = isWorkProfile ? R.string.preview_work_file : R.string.preview_file;
- return dpm.getString(
- updatableStringId,
- () -> itemView.getResources().getString(defaultStringId, fileName),
- /* formatArgs= */ fileName);
+ if (VersionUtils.isAtLeastT()) {
+ DevicePolicyManager dpm = itemView.getContext().getSystemService(
+ DevicePolicyManager.class);
+ String updatableStringId = isWorkProfile ? PREVIEW_WORK_FILE_ACCESSIBILITY : UNDEFINED;
+ int defaultStringId =
+ isWorkProfile ? R.string.preview_work_file : R.string.preview_file;
+ return dpm.getString(
+ updatableStringId,
+ () -> itemView.getResources().getString(defaultStringId, fileName),
+ /* formatArgs= */ fileName);
+ } else {
+ return itemView.getResources().getString(
+ isWorkProfile ? R.string.preview_work_file : R.string.preview_file, fileName);
+ }
}
protected static class PreviewAccessibilityDelegate extends View.AccessibilityDelegate {
diff --git a/src/com/android/documentsui/dirlist/GridDirectoryHolder.java b/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
index 0357f1277..8998b20c3 100644
--- a/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
+++ b/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
@@ -16,10 +16,16 @@
package com.android.documentsui.dirlist;
+import static android.app.admin.DevicePolicyResources.Drawables.Style.SOLID_COLORED;
+import static android.app.admin.DevicePolicyResources.Drawables.WORK_PROFILE_ICON;
+
import static com.android.documentsui.base.DocumentInfo.getCursorString;
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.database.Cursor;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Document;
import android.view.MotionEvent;
@@ -28,10 +34,13 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.RequiresApi;
+
import com.android.documentsui.IconUtils;
import com.android.documentsui.R;
import com.android.documentsui.base.State;
import com.android.documentsui.ui.Views;
+import com.android.documentsui.util.VersionUtils;
final class GridDirectoryHolder extends DocumentHolder {
@@ -52,6 +61,18 @@ final class GridDirectoryHolder extends DocumentHolder {
mIconBriefcase = (ImageView) itemView.findViewById(R.id.icon_briefcase);
mIconMime.setImageDrawable(
IconUtils.loadMimeIcon(context, DocumentsContract.Document.MIME_TYPE_DIR));
+
+ if (VersionUtils.isAtLeastT()) {
+ setUpdatableWorkProfileIcon(context);
+ }
+ }
+
+ @RequiresApi(Build.VERSION_CODES.TIRAMISU)
+ private void setUpdatableWorkProfileIcon(Context context) {
+ DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
+ Drawable drawable = dpm.getDrawable(WORK_PROFILE_ICON, SOLID_COLORED, () ->
+ context.getDrawable(R.drawable.ic_briefcase));
+ mIconBriefcase.setImageDrawable(drawable);
}
@Override
diff --git a/src/com/android/documentsui/dirlist/GridDocumentHolder.java b/src/com/android/documentsui/dirlist/GridDocumentHolder.java
index 91feeca19..16983ed09 100644
--- a/src/com/android/documentsui/dirlist/GridDocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/GridDocumentHolder.java
@@ -16,12 +16,18 @@
package com.android.documentsui.dirlist;
+import static android.app.admin.DevicePolicyResources.Drawables.Style.SOLID_COLORED;
+import static android.app.admin.DevicePolicyResources.Drawables.WORK_PROFILE_ICON;
+
import static com.android.documentsui.base.DocumentInfo.getCursorInt;
import static com.android.documentsui.base.DocumentInfo.getCursorLong;
import static com.android.documentsui.base.DocumentInfo.getCursorString;
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.database.Cursor;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
import android.provider.DocumentsContract.Document;
import android.text.format.Formatter;
import android.view.MotionEvent;
@@ -30,12 +36,15 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.RequiresApi;
+
import com.android.documentsui.R;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.Shared;
import com.android.documentsui.base.UserId;
import com.android.documentsui.roots.RootCursorWrapper;
import com.android.documentsui.ui.Views;
+import com.android.documentsui.util.VersionUtils;
import java.util.function.Function;
@@ -71,6 +80,18 @@ final class GridDocumentHolder extends DocumentHolder {
mPreviewIcon = itemView.findViewById(R.id.preview_icon);
mIconHelper = iconHelper;
+
+ if (VersionUtils.isAtLeastT()) {
+ setUpdatableWorkProfileIcon(context);
+ }
+ }
+
+ @RequiresApi(Build.VERSION_CODES.TIRAMISU)
+ private void setUpdatableWorkProfileIcon(Context context) {
+ DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
+ Drawable drawable = dpm.getDrawable(WORK_PROFILE_ICON, SOLID_COLORED, () ->
+ context.getDrawable(R.drawable.ic_briefcase));
+ mIconBriefcase.setImageDrawable(drawable);
}
@Override
diff --git a/src/com/android/documentsui/dirlist/GridPhotoHolder.java b/src/com/android/documentsui/dirlist/GridPhotoHolder.java
index fe2389844..a9b790bcc 100644
--- a/src/com/android/documentsui/dirlist/GridPhotoHolder.java
+++ b/src/com/android/documentsui/dirlist/GridPhotoHolder.java
@@ -16,12 +16,18 @@
package com.android.documentsui.dirlist;
+import static android.app.admin.DevicePolicyResources.Drawables.Style.SOLID_NOT_COLORED;
+import static android.app.admin.DevicePolicyResources.Drawables.WORK_PROFILE_ICON;
+
import static com.android.documentsui.base.DocumentInfo.getCursorInt;
import static com.android.documentsui.base.DocumentInfo.getCursorLong;
import static com.android.documentsui.base.DocumentInfo.getCursorString;
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.database.Cursor;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
import android.provider.DocumentsContract.Document;
import android.text.format.Formatter;
import android.view.MotionEvent;
@@ -29,12 +35,15 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
+import androidx.annotation.RequiresApi;
+
import com.android.documentsui.R;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.Shared;
import com.android.documentsui.base.UserId;
import com.android.documentsui.roots.RootCursorWrapper;
import com.android.documentsui.ui.Views;
+import com.android.documentsui.util.VersionUtils;
import java.util.function.Function;
@@ -60,6 +69,20 @@ final class GridPhotoHolder extends DocumentHolder {
mPreviewIcon = itemView.findViewById(R.id.preview_icon);
mIconHelper = iconHelper;
+
+ if (VersionUtils.isAtLeastT()) {
+ setUpdatableWorkProfileIcon(context);
+ }
+ }
+
+ @RequiresApi(Build.VERSION_CODES.TIRAMISU)
+ private void setUpdatableWorkProfileIcon(Context context) {
+ DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
+ Drawable drawable = dpm.getDrawable(WORK_PROFILE_ICON, SOLID_NOT_COLORED, () ->
+ context.getDrawable(R.drawable.ic_briefcase));
+ ImageView icon = (ImageView) mIconBriefcase.findViewById(R.id.icon_id);
+
+ icon.setImageDrawable(drawable);
}
@Override
diff --git a/src/com/android/documentsui/dirlist/ListDocumentHolder.java b/src/com/android/documentsui/dirlist/ListDocumentHolder.java
index bc2209260..7fe48eecb 100644
--- a/src/com/android/documentsui/dirlist/ListDocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/ListDocumentHolder.java
@@ -16,12 +16,18 @@
package com.android.documentsui.dirlist;
+import static android.app.admin.DevicePolicyResources.Drawables.Style.SOLID_COLORED;
+import static android.app.admin.DevicePolicyResources.Drawables.WORK_PROFILE_ICON;
+
import static com.android.documentsui.base.DocumentInfo.getCursorInt;
import static com.android.documentsui.base.DocumentInfo.getCursorString;
+import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
import android.text.TextUtils;
import android.text.format.Formatter;
import android.util.Log;
@@ -33,6 +39,7 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
import com.android.documentsui.R;
import com.android.documentsui.base.DocumentInfo;
@@ -42,6 +49,7 @@ import com.android.documentsui.base.State;
import com.android.documentsui.base.UserId;
import com.android.documentsui.roots.RootCursorWrapper;
import com.android.documentsui.ui.Views;
+import com.android.documentsui.util.VersionUtils;
import java.util.ArrayList;
import java.util.function.Function;
@@ -90,6 +98,18 @@ final class ListDocumentHolder extends DocumentHolder {
mIconHelper = iconHelper;
mFileTypeLookup = fileTypeLookup;
mDoc = new DocumentInfo();
+
+ if (VersionUtils.isAtLeastT()) {
+ setUpdatableWorkProfileIcon(context);
+ }
+ }
+
+ @RequiresApi(Build.VERSION_CODES.TIRAMISU)
+ private void setUpdatableWorkProfileIcon(Context context) {
+ DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
+ Drawable drawable = dpm.getDrawable(WORK_PROFILE_ICON, SOLID_COLORED, () ->
+ context.getDrawable(R.drawable.ic_briefcase));
+ mIconBriefcase.setImageDrawable(drawable);
}
@Override
diff --git a/src/com/android/documentsui/dirlist/Message.java b/src/com/android/documentsui/dirlist/Message.java
index 2d76a4254..9ef50e722 100644
--- a/src/com/android/documentsui/dirlist/Message.java
+++ b/src/com/android/documentsui/dirlist/Message.java
@@ -16,6 +16,8 @@
package com.android.documentsui.dirlist;
+import static android.app.admin.DevicePolicyResources.Drawables.Style.OUTLINE;
+import static android.app.admin.DevicePolicyResources.Drawables.WORK_PROFILE_OFF_ICON;
import static android.app.admin.DevicePolicyResources.Strings.DocumentsUi.CANT_SAVE_TO_PERSONAL_MESSAGE;
import static android.app.admin.DevicePolicyResources.Strings.DocumentsUi.CANT_SAVE_TO_PERSONAL_TITLE;
import static android.app.admin.DevicePolicyResources.Strings.DocumentsUi.CANT_SAVE_TO_WORK_MESSAGE;
@@ -34,8 +36,10 @@ import android.app.AuthenticationRequiredException;
import android.app.admin.DevicePolicyManager;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
+import android.os.Build;
import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
import com.android.documentsui.CrossProfileException;
import com.android.documentsui.CrossProfileNoPermissionException;
@@ -48,6 +52,7 @@ import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.State;
import com.android.documentsui.base.UserId;
import com.android.documentsui.dirlist.DocumentsAdapter.Environment;
+import com.android.documentsui.util.VersionUtils;
/**
* Data object used by {@link InflateMessageDocumentHolder} and {@link HeaderMessageDocumentHolder}.
@@ -240,7 +245,7 @@ abstract class Message {
WORK_PROFILE_OFF_ERROR_TITLE, R.string.quiet_mode_error_title),
/* messageString= */ "",
buttonText,
- mEnv.getContext().getDrawable(R.drawable.work_off));
+ getWorkProfileOffIcon());
}
private void updateToCrossProfileNoPermissionErrorMessage() {
@@ -328,9 +333,31 @@ abstract class Message {
}
private String getEnterpriseString(String updatableStringId, int defaultStringId) {
- DevicePolicyManager dpm = mEnv.getContext().getSystemService(DevicePolicyManager.class);
- return dpm.getString(
- updatableStringId, () -> mEnv.getContext().getString(defaultStringId));
+ if (VersionUtils.isAtLeastT()) {
+ DevicePolicyManager dpm = mEnv.getContext().getSystemService(
+ DevicePolicyManager.class);
+ return dpm.getString(
+ updatableStringId, () -> mEnv.getContext().getString(defaultStringId));
+ } else {
+ return mEnv.getContext().getString(defaultStringId);
+ }
+ }
+
+ private Drawable getWorkProfileOffIcon() {
+ if (VersionUtils.isAtLeastT()) {
+ return getUpdatableWorkProfileIcon();
+ } else {
+ return mEnv.getContext().getDrawable(R.drawable.work_off);
+ }
+ }
+
+ @RequiresApi(Build.VERSION_CODES.TIRAMISU)
+ private Drawable getUpdatableWorkProfileIcon() {
+ DevicePolicyManager dpm = mEnv.getContext().getSystemService(
+ DevicePolicyManager.class);
+ return dpm.getDrawable(
+ WORK_PROFILE_OFF_ICON, OUTLINE,
+ () -> mEnv.getContext().getDrawable(R.drawable.work_off));
}
}
}
diff --git a/src/com/android/documentsui/sidebar/UserItemsCombiner.java b/src/com/android/documentsui/sidebar/UserItemsCombiner.java
index 6ad681df5..a8e59d4e0 100644
--- a/src/com/android/documentsui/sidebar/UserItemsCombiner.java
+++ b/src/com/android/documentsui/sidebar/UserItemsCombiner.java
@@ -30,6 +30,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.documentsui.R;
import com.android.documentsui.base.State;
import com.android.documentsui.base.UserId;
+import com.android.documentsui.util.VersionUtils;
import java.util.ArrayList;
import java.util.List;
@@ -107,6 +108,10 @@ class UserItemsCombiner {
}
private String getEnterpriseString(String updatableStringId, int defaultStringId) {
- return mDpm.getString(updatableStringId, () -> mResources.getString(defaultStringId));
+ if (VersionUtils.isAtLeastT()) {
+ return mDpm.getString(updatableStringId, () -> mResources.getString(defaultStringId));
+ } else {
+ return mResources.getString(defaultStringId);
+ }
}
}
diff --git a/src/com/android/documentsui/util/VersionUtils.java b/src/com/android/documentsui/util/VersionUtils.java
index aba6374ec..2e3aa60dd 100644
--- a/src/com/android/documentsui/util/VersionUtils.java
+++ b/src/com/android/documentsui/util/VersionUtils.java
@@ -42,4 +42,12 @@ public class VersionUtils {
return Build.VERSION.CODENAME.equals("S")
|| Build.VERSION.SDK_INT >= 31;
}
+
+ /**
+ * Returns whether the device is running on Android T or newer.
+ */
+ public static boolean isAtLeastT() {
+ return Build.VERSION.CODENAME.startsWith("T")
+ || Build.VERSION.SDK_INT >= 33;
+ }
}