OSDN Git Service

DO NOT MERGE Modify system settings: incorrect UI state
authorSvetoslav <svetoslavganov@google.com>
Tue, 24 Nov 2015 19:31:13 +0000 (11:31 -0800)
committerAkshay Thakker <aksh@google.com>
Fri, 12 Feb 2016 20:25:18 +0000 (20:25 +0000)
commit2c02228ad0cd7b9d86050647c679843e829819d4
treecffac341a22fda496e9522f39e13013f27168c0d
parent21e3d54adc473b20c2591cd348b79fe0dd43e61e
DO NOT MERGE Modify system settings: incorrect UI state

The privilege for an app to write to the system settings is protected
by an app-op signature permission. App-op permissions are special: if
the app-op is deny/allow we deny/allow write access; if the app-op is
default holding the permission determies write access. The settings
code assumes that CHANGE_NETWORK_STATE is an app op permission
(system|appop) while it is a normal permission which any app gets by
declaring it used in the manifest.

The side effect is that the state of the toggle in the UI for write
system settings will initially be in the wrong state if the app uses
both WRITE_SETTINGS and CHANGE_NETWORK_STATE. However, the code in
the public API an app uses to check write settings access would return
the opposite since it checks the WRITE_SETTINGS permission and its
app op. Hence, if an app requires write settings to start the user
will see in the settings UI it has access but the app will not have
access, so the app would prompt the user to allow write settings.
The non-obvious fix is for the user to toggle the setting off and on
to get the app op in the right state and be able to launch the app.

bug:25843134

Change-Id: I3d726a66c7f9857bc7dbd5946fdbb8f340c6eb4d
(cherry picked from commit 356fb2d10d9f4c236b0f10d0e2facb93028b9f3c)
(cherry picked from commit 119d589ea5aa9c2ccc5164279d718a20d0865f20)
src/com/android/settings/applications/AppStateWriteSettingsBridge.java