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

Commit eb372c93 authored by Billy Lau's avatar Billy Lau Committed by Android (Google) Code Review
Browse files

Merge "Bug: 22718745 Intents to 'draw over other apps' should go direct to the...

Merge "Bug: 22718745 Intents to 'draw over other apps' should go direct to the package's page instead of the top level one" into mnc-dev
parents 19128bd1 fee78564
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -2541,6 +2541,18 @@
                android:value="com.android.settings.applications.ManageApplications" />
        </activity>

        <activity android:name="Settings$AppDrawOverlaySettingsActivity"
                android:label="@string/draw_overlay_title"
                android:taskAffinity="">
            <intent-filter android:priority="1">
                <action android:name="android.settings.action.MANAGE_OVERLAY_PERMISSION" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="package" />
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.applications.DrawOverlayDetails" />
        </activity>

        <activity android:name="Settings$WriteSettingsActivity"
                android:label="@string/write_settings_title"
                android:taskAffinity="">
@@ -2552,5 +2564,17 @@
                android:value="com.android.settings.applications.ManageApplications" />
        </activity>

        <activity android:name="Settings$AppWriteSettingsActivity"
                android:label="@string/write_settings_title"
                android:taskAffinity="">
            <intent-filter android:priority="1">
                <action android:name="android.settings.action.MANAGE_WRITE_SETTINGS" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="package" />
            </intent-filter>
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.applications.WriteSettingsDetails" />
        </activity>

    </application>
</manifest>
+2 −0
Original line number Diff line number Diff line
@@ -116,4 +116,6 @@ public class Settings extends SettingsActivity {
    public static class MemorySettingsActivity extends SettingsActivity { /* empty */ }
    public static class OverlaySettingsActivity extends SettingsActivity { /* empty */ }
    public static class WriteSettingsActivity extends SettingsActivity { /* empty */ }
    public static class AppDrawOverlaySettingsActivity extends SettingsActivity { /* empty */ }
    public static class AppWriteSettingsActivity extends SettingsActivity { /* empty */ }
}
+4 −0
Original line number Diff line number Diff line
@@ -70,12 +70,14 @@ import com.android.settings.accessibility.AccessibilitySettings;
import com.android.settings.accessibility.CaptionPropertiesFragment;
import com.android.settings.accounts.AccountSettings;
import com.android.settings.accounts.AccountSyncSettings;
import com.android.settings.applications.DrawOverlayDetails;
import com.android.settings.applications.InstalledAppDetails;
import com.android.settings.applications.ManageApplications;
import com.android.settings.applications.ManageAssist;
import com.android.settings.applications.ProcessStatsSummary;
import com.android.settings.applications.ProcessStatsUi;
import com.android.settings.applications.UsageAccessDetails;
import com.android.settings.applications.WriteSettingsDetails;
import com.android.settings.bluetooth.BluetoothSettings;
import com.android.settings.dashboard.DashboardCategory;
import com.android.settings.dashboard.DashboardSummary;
@@ -350,6 +352,8 @@ public class SettingsActivity extends Activity
            ProcessStatsUi.class.getName(),
            PowerUsageDetail.class.getName(),
            ProcessStatsSummary.class.getName(),
            DrawOverlayDetails.class.getName(),
            WriteSettingsDetails.class.getName(),
    };


+9 −6
Original line number Diff line number Diff line
@@ -88,13 +88,15 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
            int[] permissionFlags = permissionState.packageInfo.requestedPermissionsFlags;
            if (requestedPermissions != null) {
                for (int i = 0; i < requestedPermissions.length; i++) {
                    if (mPermissions[0].equals(requestedPermissions[i]) &&
                            (permissionFlags[i] & PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0) {
                    if (mPermissions[0].equals(requestedPermissions[i])) {
                        permissionState.permissionDeclared = true;
                        if ((permissionFlags[i] & PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0) {
                            permissionState.staticPermissionGranted = true;
                            break;
                        }
                    }
                }
            }
            // Check app op state.
            List<PackageOps> ops = mAppOpsManager.getOpsForPackage(uid, pkg, mAppOpsOpCodes);
            if (ops != null && ops.size() > 0 && ops.get(0).getOps().size() > 0) {
@@ -164,7 +166,7 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
    }

    /*
     * This method will set the packageInfo and permissionDeclared field of the associated
     * This method will set the packageInfo and staticPermissionGranted field of the associated
     * PermissionState, which describes a particular package.
     */
    private void loadPermissionsStates(SparseArray<ArrayMap<String, PermissionState>> entries) {
@@ -185,7 +187,7 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
                    final PermissionState pe = entriesForProfile.get(packageInfo.packageName);
                    if (pe != null) {
                        pe.packageInfo = packageInfo;
                        pe.permissionDeclared = true;
                        pe.staticPermissionGranted = true;
                    }
                }
            }
@@ -279,6 +281,7 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
        public final String packageName;
        public final UserHandle userHandle;
        public PackageInfo packageInfo;
        public boolean staticPermissionGranted;
        public boolean permissionDeclared;
        public int appOpMode;

@@ -293,7 +296,7 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
            // permission (this means pre-M gets approval during install time; M apps gets approval
            // during runtime.
            if (appOpMode == AppOpsManager.MODE_DEFAULT) {
                return permissionDeclared;
                return staticPermissionGranted;
            }
            return appOpMode == AppOpsManager.MODE_ALLOWED;
        }
+1 −0
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ public class AppStateOverlayBridge extends AppStateAppOpsBridge {
            this.packageInfo = permissionState.packageInfo;
            this.appOpMode = permissionState.appOpMode;
            this.permissionDeclared = permissionState.permissionDeclared;
            this.staticPermissionGranted = permissionState.staticPermissionGranted;
        }
    }

Loading