Loading AndroidManifest.xml +24 −0 Original line number Diff line number Diff line Loading @@ -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=""> Loading @@ -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> src/com/android/settings/Settings.java +2 −0 Original line number Diff line number Diff line Loading @@ -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 */ } } src/com/android/settings/SettingsActivity.java +4 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -350,6 +352,8 @@ public class SettingsActivity extends Activity ProcessStatsUi.class.getName(), PowerUsageDetail.class.getName(), ProcessStatsSummary.class.getName(), DrawOverlayDetails.class.getName(), WriteSettingsDetails.class.getName(), }; Loading src/com/android/settings/applications/AppStateAppOpsBridge.java +9 −6 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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) { Loading @@ -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; } } } Loading Loading @@ -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; Loading @@ -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; } Loading src/com/android/settings/applications/AppStateOverlayBridge.java +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
AndroidManifest.xml +24 −0 Original line number Diff line number Diff line Loading @@ -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=""> Loading @@ -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>
src/com/android/settings/Settings.java +2 −0 Original line number Diff line number Diff line Loading @@ -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 */ } }
src/com/android/settings/SettingsActivity.java +4 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -350,6 +352,8 @@ public class SettingsActivity extends Activity ProcessStatsUi.class.getName(), PowerUsageDetail.class.getName(), ProcessStatsSummary.class.getName(), DrawOverlayDetails.class.getName(), WriteSettingsDetails.class.getName(), }; Loading
src/com/android/settings/applications/AppStateAppOpsBridge.java +9 −6 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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) { Loading @@ -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; } } } Loading Loading @@ -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; Loading @@ -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; } Loading
src/com/android/settings/applications/AppStateOverlayBridge.java +1 −0 Original line number Diff line number Diff line Loading @@ -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