Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d43fb2b9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add Compat framework flag to restrict SAF" into rvc-dev

parents 73aacb48 f0f7d2ef
Loading
Loading
Loading
Loading
+13 −1
Original line number Original line Diff line number Diff line
@@ -28,6 +28,10 @@ java_defaults {
        "guava",
        "guava",
    ],
    ],


    libs: [
        "app-compat-annotations",
    ],

    privileged: true,
    privileged: true,


    certificate: "platform",
    certificate: "platform",
@@ -38,7 +42,15 @@ java_defaults {


    sdk_version: "system_current",
    sdk_version: "system_current",


    plugins: ["java_api_finder"],
    plugins: [
        "compat-changeid-annotation-processor",
        "java_api_finder",
    ],
}

platform_compat_config {
    name: "documents-ui-compat-config",
    src: ":DocumentsUI",
}
}


filegroup {
filegroup {
+4 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,10 @@
    <uses-permission android:name="android.permission.CHANGE_OVERLAY_PACKAGES" />
    <uses-permission android:name="android.permission.CHANGE_OVERLAY_PACKAGES" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />


    <!-- Permissions required for reading and logging compat changes -->
    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>

    <application
    <application
        android:name=".DocumentsApplication"
        android:name=".DocumentsApplication"
        android:label="@string/app_label"
        android:label="@string/app_label"
+32 −1
Original line number Original line Diff line number Diff line
@@ -19,6 +19,9 @@ package com.android.documentsui.base;
import static com.android.documentsui.base.SharedMinimal.TAG;
import static com.android.documentsui.base.SharedMinimal.TAG;


import android.app.Activity;
import android.app.Activity;
import android.app.compat.CompatChanges;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledAfter;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Context;
@@ -29,6 +32,7 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;
import android.content.res.Configuration;
import android.net.Uri;
import android.net.Uri;
import android.os.Looper;
import android.os.Looper;
import android.os.UserHandle;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract;
import android.provider.Settings;
import android.provider.Settings;
import android.text.TextUtils;
import android.text.TextUtils;
@@ -138,6 +142,16 @@ public final class Shared {


    private static final Collator sCollator;
    private static final Collator sCollator;


    /**
     * We support restrict Storage Access Framework from {@link android.os.Build.VERSION_CODES#R}.
     * App Compatibility flag that indicates whether the app should be restricted or not.
     * This flag is turned on by default for all apps targeting >
     * {@link android.os.Build.VERSION_CODES#Q}.
     */
    @ChangeId
    @EnabledAfter(targetSdkVersion = android.os.Build.VERSION_CODES.Q)
    private static final long RESTRICT_STORAGE_ACCESS_FRAMEWORK = 141600225L;

    static {
    static {
        sCollator = Collator.getInstance();
        sCollator = Collator.getInstance();
        sCollator.setStrength(Collator.SECONDARY);
        sCollator.setStrength(Collator.SECONDARY);
@@ -147,10 +161,27 @@ public final class Shared {
     * @deprecated use {@link MessageBuilder#getQuantityString}
     * @deprecated use {@link MessageBuilder#getQuantityString}
     */
     */
    @Deprecated
    @Deprecated
    public static final String getQuantityString(Context context, @PluralsRes int resourceId, int quantity) {
    public static String getQuantityString(Context context, @PluralsRes int resourceId,
            int quantity) {
        return context.getResources().getQuantityString(resourceId, quantity, quantity);
        return context.getResources().getQuantityString(resourceId, quantity, quantity);
    }
    }


    /**
     * Whether the calling app should be restricted in Storage Access Framework or not.
     */
    public static boolean shouldRestrictStorageAccessFramework(Activity activity) {
        final String packageName = getCallingPackageName(activity);
        final int uid = UserId.CURRENT_USER.getIdentifier();
        final boolean ret = CompatChanges.isChangeEnabled(RESTRICT_STORAGE_ACCESS_FRAMEWORK,
                packageName, UserHandle.getUserHandleForUid(uid));

        Log.d(TAG,
                "shouldRestrictStorageAccessFramework = " + ret + ", packageName = " + packageName
                        + " with user = " + uid);

        return ret;
    }

    public static String formatTime(Context context, long when) {
    public static String formatTime(Context context, long when) {
        // TODO: DateUtils should make this easier
        // TODO: DateUtils should make this easier
        ZoneId zoneId = ZoneId.systemDefault();
        ZoneId zoneId = ZoneId.systemDefault();