History log of /frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
3b566b84708eea887ab3e1e1bbba4b2242b261d6 12-Nov-2014 Jeff Sharkey <jsharkey@android.com> Move ringtone redirection to MediaPlayer.

Way back in API 1 we defined Settings.System.DEFAULT_NOTIFICATION_URI
which redirects through SettingsProvider before finally ariving at
the real underlying ContentProvider, usually MediaStore.

With new SELinux rules, we're no longer allowing the system_server
to hold open FDs to shared storage devices, which causes these
proxied openFile() calls to fail.

To work around this, teach MediaPlayer to resolve the final ringtone
Uri without going through the system.

Bug: 18226181
Change-Id: I40c68617c952c0bb3e939e5084f5b68a35e31ae3
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
67f175cf07ff52c5bee30536caad2e97800ab5b8 03-Oct-2014 Dianne Hackborn <hackbod@google.com> Fix issue #17811029: Settings provider race when removing users

Change-Id: Ia40d0a9c161b765d1340db5390d0acdbfc050b81
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
3de09018a9611b1791cc29ed5200b7d9694189a9 02-Oct-2014 Kenny Guy <kennyguy@google.com> Merge "SettingsProvider should use correct cache when redirecting to user 0." into lmp-dev
8d05172112436a81bed6e4a0810f8914509d8a4d 01-Oct-2014 Dianne Hackborn <hackbod@google.com> More work on issue #17656716: Unhandled exception in Window Manager

Fix Slog.wtf to not acquire the activity manager lock in its code
path, so that it can never deadlock. This was the original intention
of it, but part was missed.

Now we can put back in the code to detect when strict mode data is
getting large (a little more targeted now to the actual problem),
and use Slog.wtf to report it. And as a bonus, when this happens
we will now clear all of the collected violations, to avoid getting
in to the bad case where IPCs start failing. So this should be
good enough for L to fix the problem, with wtf reports for us to
see if the underlying issue is still happening.

Finally, switch a butch of stuff in the system process from Log.wtf
to Slog.wtf, since many of those are deadlocks waiting to happen.

Oh and fix a crash in the settings provider I noticed in APR.

Change-Id: I307d51b7a4db238fd1e5fe2f3f9bf1b9c6f1c041
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
a37d000c2b4acfc72f5a5e75e5cd711fd10acaa8 01-Oct-2014 Kenny Guy <kennyguy@google.com> SettingsProvider should use correct cache when redirecting to user 0.

SettingsProvider reads secure and system settings for managed
profiles from user 0 instead. However it still checks the cache
for the managed profile not user 0.

Bug: 17736586
Change-Id: I15d44b8a5779b01e6b9032e528dc34f5c5602449
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
ccc7cb9bdb3eb5f86d81e223b82e04dab21ad5fa 23-Sep-2014 Amith Yamasani <yamasani@google.com> Return masked location mode for managed profiles

If there's a user restriction on location sharing in a
managed profile, always return empty string for location
providers so that location can be disabled by the admin
even if the primary user has location enabled.

Also fix an incorrect update of the cache. Shouldn't update
the primary user's cache when the caller is the managed profile.

Bug: 17478855
Change-Id: Icab3459ae351c5cfc287e21df6a5ba1df9dfbdb4
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
35349352732fd6d889b8d718dd29f068ebbf1021 11-Sep-2014 Zoltan Szatmary-Ban <szatmz@google.com> Leave SettingsProvider running if cloning of a setting fails

Cloning of settings to managed profiles could fail due to security restrictions. This caused
Settings app crash. Instead the exception is now caught inside SettingsProvider, logged,
and we leave the app running.

Bug:17450158
Change-Id: I7525d634e57701db304117f4b2035faf53977836
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
b53453fae037d67e421011936c8fdffe7ba43922 22-Aug-2014 Julia Reynolds <juliacr@google.com> Audio/Micrphone user restriction/multiuser updates.

1. Persist microphone mute state.
2. Set mute state for correct user.
3. Check for settings restrictions as the correct user.

Bug: 17177502
Bug: 16701642
Change-Id: Id8b6cd90c5caceb67fbec862f90aac7ec7a00b3c
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
4f7e2e334e4ca5f1a67baf4bdd40cd080b954161 15-Aug-2014 Amith Yamasani <yamasani@google.com> Copy certain settings to the managed profile

All reads of those specific settings will go to the primary user.
Inserts to primary also go to managed profiles in order to notify
any observers.

This enables Location settings to be shared by both profiles.
Also some other settings related to IME and Accessibility since
those services are shared across the profiles.

Bug: 16457210
Change-Id: Ib8fd697b5c78027fcbaf245d82dda5e6d6aab4f0
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
25838509d84a139d0f0bc1f74ea674fcfba76629 10-Jul-2014 Julia Reynolds <juliacr@google.com> INSTALL_NON_MARKET_APPS lives in Secure again.

Change-Id: Ib3c7a48b8dc2d649f2f6c8e8cd822ab342634afd
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
5e458dd6b4b92c369865e59c81a02c8ce8c342f6 07-Jul-2014 Julia Reynolds <juliacr@google.com> Apply user restrictions to SettingsProvider.

Change-Id: If68c715bc688bf0df63591e0b8f8bf8a2b6dd118
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
0da1357f9827b6a2df24a449dbb8eba12484095c 14-Oct-2013 Christopher Tate <ctate@google.com> Log noisily on uid vs user-handle confusion in the settings provider

Make sure that we catch any attempts to pass a uid to the settings
provider's "for this user" code paths.

Bug 11087584
Bug 11208808

Change-Id: I1cc025b2aade9072b4a61b4499d02c82b0085fa2
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
911d7f411f36f2279aae44c89ff1d33a29140046 06-Sep-2013 Jeff Sharkey <jsharkey@android.com> Provide calling package to ContentProviders.

The calling package is important for ContentProviders that want to
grant Uri permissions as a side effect of operations, so offer it
through a new API. Validates the provided package against the
calling UID before returning.

Bug: 10626527
Change-Id: I7277880eebbd48444c024bcf5f69199133cd59e4
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
38e7a60fd7fecdf1c6593724111a92147b4c50ff 04-Sep-2013 Christopher Tate <ctate@google.com> Sanity check users before committing new Android ID

In creation/deletion cycling we can wind up racing and attempting
to establish the Android ID on first access *after* the user has
already been deleted. Cope gracefully with this outcome.

Bug 10608503

Change-Id: I169d5052e5a2e354ce0e1f61258e45e31f5ba171
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
7f50ef7ddafc6dc7d6419e312185160995047256 28-Jun-2013 Amith Yamasani <yamasani@google.com> am 3f0decd7: am 16a2268f: am e6304a9c: Merge "When a new user AID is generated, dump it to dropbox" into jb-mr2-dev

* commit '3f0decd7dff8b4c12544c24b2d19a41d4eaacd03':
When a new user AID is generated, dump it to dropbox
5cdf7f5b2a75455e8024a4cb892ac38bcd8e9582 28-Jun-2013 Amith Yamasani <yamasani@google.com> When a new user AID is generated, dump it to dropbox

Bug: 9595851
Change-Id: I6fde757eed84d7914db180e80c9d68448b3e5780
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
853ad6fbe34fa26e81e4b7325309a034d7a1b038 30-Apr-2013 Mike Lockwood <lockwood@google.com> Remove obsolete OMA-DRM support

Change-Id: Ic6008d4c9f8b9cd9fd4efec070260227af70559c
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
27db46850b708070452c0ce49daf5f79503fbde6 31-Mar-2013 Amith Yamasani <yamasani@google.com> Block access to accounts for limited users.

Make sure that apps that have access to restricted accounts can see them.
If they don't have access, they shouldn't be able to add a new account either.
Show an error message in the account picker if the user/app is not authorized.

Change-Id: I117c0b14d7d06c5ac4e66506df156b174567f5f3
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
1095d9ac5df839408b9a549cc638c2909d98dfac 07-Feb-2013 Maggie Benthall <mbenthall@google.com> Merge "Fix for SettingsProvider to query for correct user."
d2726582f135383e56661bc41d750966642dab45 04-Feb-2013 Maggie Benthall <mbenthall@google.com> Fix for SettingsProvider to query for correct user.

insertForUser takes a specified user and attempts to adjust that user's
settings, first looking at their existing settings to determine the difference.
However it was querying the settings for the calling user, rather than for
the user whose settings were being changed.

Also add a test that exercises the fix.

Change-Id: I6ed6fd79154ac1b6e6ab880769ac9081dfff6b80
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
961321fe4ed4431a6362d729d9e4ea26bdecde61 06-Feb-2013 Dianne Hackborn <hackbod@google.com> App ops: add op for writing settings.

Also fix a build.

And fix a bug that I think was introduced in the multi-user work
that removed the permission check for writing to settings...!

Change-Id: I5945682faa789ffc78fd3546c0df7d03693f106d
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
40e9f2922cae76ffcbc521481e5be8e80e8744ef 28-Nov-2012 Dianne Hackborn <hackbod@google.com> Quiet down a lot of logging.

Also fix a little problem where the USER_STARTED broadcasts
were not being sent as ordered broadcasts(!).

Change-Id: I3aa3e0a9b3900967cdd2d115ee103371b0a50c41
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
61695ffcbccc6cca210e869eb3bc6e97127c2357 05-Oct-2012 Christopher Tate <ctate@google.com> Make sure settings writes are permission checked correctly

The last bit of undoing the earlier tangle around query results having
observers under the calling user's identity. We do *not* want to drop
calling identity in the call() processing; we want the table-based
permission checks at the point of the underlying db operations to be
performed against that identity.

Bug 7265610

Change-Id: Ie0c9331ebd0918262a0a32b5b03b876fc2a92ca3
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
34637e57fc5bce01029806a67cf0cc2ef049e13b 05-Oct-2012 Christopher Tate <ctate@google.com> Make sure to check write perms after rewriting destination table

The write-permission check must occur after any destination-table
rewriting, otherwise any application would be able to write to
any global setting, by supplying a fraudulent "system" namespace
in the uri, but with a key name that will be redirected to global.

Bug 7289965

Change-Id: I122098a64e40d14e00d3cb6608c50aeb74faf7ce
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
35dd752238d3ce3b83e78eb4b00a85ea3d067088 04-Oct-2012 Christopher Tate <ctate@google.com> Merge "Rewrite raw insert()s and some raw query()s of moved-to-global keys" into jb-mr1-dev
c221d2be7d2bf57373d43457b18483266f88f9a6 04-Oct-2012 Christopher Tate <ctate@google.com> Rewrite raw insert()s and some raw query()s of moved-to-global keys

The Settings put*() APIs fix up references via the old namespaces,
but the raw insert() interface didn't. Now it does. Also, when
possible we fix up direct query() operations on the old namespace
to point to the correct one. At present that is only done for
query() operations with Uris of the form

content://secure/adb_enabled

There is no rewriting done on queries of the form

content://secure WHERE name='adb_enabled'

since the app-supplied WHERE clause can be arbitrarily complex.

Bug 7267568

Change-Id: I5c8cecbea7f5b1da6247a53b1428d3effb0bbca5
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
afccaa84c8d1b9aa45040ddeb0edd42ba80e80d6 04-Oct-2012 Christopher Tate <ctate@google.com> Use myUserId() only in registerContentObserver()

The reason for this is a bit subtle: we want to guarantee that
when a content observer is registered using the public API, it
is *always* bound to the host user's view of the data behind the
observed Uri, never the calling user's. Now, the reason it was
the calling user in the first place is that the Settings provider
(and potentially any singleton provider) needs the observers
underlying Cursors returned from query() to be tied to the caller's
user, not the provider's host user.

In order to accomplish that now that the public-facing behavior is
always tied to the host user, the concrete class that implements
the Cursor type handled by the Settings provider has been extended
with a new hidden API for setting a notification observer tied to
an arbitrary user; and then the provider explicitly downcasts the
query result's Cursor to that class in order to register the
notification observer. We can do this safely because this is platform
code; if we change the way that these underlying cursors are constructed,
we can just fix this point of call to follow along. If they get out
of sync in the future, the Settings provider will scream bloody
murder in the log and throw a crashing exception.

Bug 7231549

Change-Id: I0aaceebb8b4108c56f8b9964ca7f9e698ddd91c8
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
66488d64df8c3cf8722b8bf282398617cf3c0551 02-Oct-2012 Christopher Tate <ctate@google.com> Make settings backup/restore work in the new multi-user world

1) Properly handle restores of settings elements that have been migrated
to the new global namespace

1) Back up and restore the new global settings namespace

3) Make sure to back up / restore the global entity
ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED

Bug 7249405

Change-Id: Ibfa9930ea4d0e16c7635697e8c631b155e4c0cb2
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
6e2bee75cea415621165698fdd9ce857bbb8872e 01-Oct-2012 Jeff Sharkey <jsharkey@android.com> Migrate more System and Secure settings to Global.

Includes telephony, WindowManager, PackageManager, and debugging
settings. Update API to point towards moved values.

Bug: 7231764, 7231252, 7231156
Change-Id: I5828747205708872f19f83a5bc821ed0a801cb79
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
625239a05401bbf18b04d9874cea3f82da7c29a1 27-Sep-2012 Jeff Sharkey <jsharkey@android.com> Migrate more Secure settings to Global.

Migrate networking, storage, battery, DropBox, and PackageManager
related Secure settings to Global table.

Bug: 7232014, 7231331, 7231198
Change-Id: I772c2a9586a2f708c9db95622477f235064b8f4d
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
bdfce2ec05a3e9ca6acd6711de6133e06f2446e6 27-Sep-2012 Jeff Sharkey <jsharkey@android.com> First step towards cleaning up Global settings.

Remove all @Deprecated @hide settings, and clean up any stragglers.

Bug: 7232125
Change-Id: Ibf67093c728d4a28565129b923edb1701d3b2789
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
d33646008948db439ea8cde8dfc0188aced6436d 25-Sep-2012 Jean-Baptiste Queru <jbq@google.com> Merge into jb-mr1-dev

Change-Id: Idf183be6a41ff37add5141a20e96d5190396d1a4
139748fd724b482e2c012a6ec44d1c5abc0c0e97 24-Sep-2012 Dianne Hackborn <hackbod@google.com> Fix issue #7215984: java.lang.RuntimeException: Unable to create...

...service com.android.systemui.SystemUIService: java.lang.NullPointerException

- Don't acquire the activity manager lock in handleIncomingUser(),
there is really no need to do so.
- Rework the settings provider client side cache code to not hold
locks while calling into the provider.

I also changed the way the settings provider uses system properties
so that there is one property for all users. We can't do one per
user, since the system property name space is limited with a fixed
size. And we don't really need to do that; the worse that happens
by combining all users is that if one running user changes one of its
settings, all other running users will think they need to reload
settings when they go to fetch them next.

Change-Id: I13b90b832310d117eb6d721aacd122cfba7d749a
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
5bcb55186ebda12d9e4308043898f7aa3ac5c952 24-Sep-2012 Doug Zongker <dougz@google.com> fix argument parser for global settings URLs

Make content://settings/global/setting_name URLs work like system and
secure URLs.

Bug: 7212535
Change-Id: I33e388a0cc80309453714eab726ce45b3f8fef73
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
b7564454297ba1706670ccab0562cac6676d0a77 20-Sep-2012 Christopher Tate <ctate@google.com> Multiuser awareness in content observer infrastructure

Content observers are registered under the calling user's identity,
not under the provider host's identity (unless the caller is using
the new permissioned entry points that allow observers to be
registered for a different user's view of the data). The most important
implication of this is that when the settings provider is directly
queried, the Cursor returned to the app is wired for change notifications
based on that calling app's user.

Note that it is not possible to use query() / insert() to read/write
data for different users. All such manipulations should use the
standard get* / put* methods in Settings.*.

Bug 7122169

Change-Id: If5d9ec44927e5e56e4e7635438f4ef48a5430986
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
c8459dc85e53a9275c89190b35f1da35cd996e46 18-Sep-2012 Christopher Tate <ctate@google.com> Settings provider needs to send notifications as itself

... and not as its ultimate caller, who may be a less-privileged
application. Fixes bug 7188309

Change-Id: Iffd37b8da84f683bf665bf3d48c0b7fbc8dd721d
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
16aa9736175f5bbe924a6e5587a2ca47c2dd702b 18-Sep-2012 Christopher Tate <ctate@google.com> Per-user content observer APIs

Callers with INTERACT_ACROSS_USERS_FULL permission can now observe content
for a given user's view (and can notify content uri changes targeted to a
specific user). An observer watching for UserHandle.USER_ALL will see all
notifications for the given uri across all users; similarly, a notifier
who specifies USER_ALL will broadcast the change to all observers across
all users.

The API handles both USER_ALL or USER_CURRENT, and explicitly forbids
any other "pseudouser" designations.

This CL also revs the Settings provider to notify with USER_ALL for
changes to global settings, and with only the affected user's handle
for all other changes.

Bug 7122169

Change-Id: I94248b11aa91d1beb0a36432e82fe5725bb1264f
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
78d2a66ac12e4c8f1303225514f573fb53af1dd9 14-Sep-2012 Christopher Tate <ctate@google.com> Fix Settings writes to a different user

Oops. Stacked bugs: first, the desired user handle was not properly
being passed from the call() entry point to the database operations;
then on top of that, the client-side cache management was still
looking in the local user's cache for the data, so a request to read
a different user's settings would return the local user's instead if
that key was already known to the local user's cache.

Reads and writes of a different user's settings are now uncached,
so they're relatively much slower. They're rare, however, so this
is not something to worry about unless we encounter a real world
case where it's a significant factor.

This CL also adds a bit of cross-user settings read/write testing
to the existing provider suite. These new tests caught both the
known wrong-user-write bug and discovered the client-side cache
bug, so yay.

Finally, the existing wholesale mutual-exclusion approach would
deadlock in certain circumstances due to the fact that the
settings database creation code might have to call out to the
Package Manager while populating the bookmark/shortcut table,
and the Package Manager would then call back into the settings
provider in the course of handling that request. The synchronization
regime has been significantly tightened up now: now the database
code [which is known to deal with concurrency itself] is allowed
to cope with multiple parallel openers of the same db; this
allows the settings provider to avoid calling out to other parts
of the system even implicitly while its internal lock is held.

Change-Id: Ib77d445b4a2ec658cc5c210830f6977c981f87ed
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
c868b645b46685574955eaff9f8d46d9262a3357 13-Sep-2012 Christopher Tate <ctate@google.com> Moved a few telephony settings from Secure to Global

Also tidy up the bookkeeping for a few settings that were earlier
moved to Global without the redirect tables being fixed up.

Change-Id: I69275db3b2636cd6ba9c8c51b88e97d8ba4b7b7d
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
4dc7a68dbeaa0edd8815b2105915753310d58343 11-Sep-2012 Christopher Tate <ctate@google.com> Set up default (random) Android IDs for all users

Also correct some now-misleading terminology in a permission-check
log message, and fix a bug in which a system component trying to
write to a secondary user's settings would wind up writing the
owner's settings instead.

Bug 7132405

Change-Id: I5b8fafc35720390a01652e386ab5b7c0ad751abe
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
d5fe1479248fa597efc7ccb0b36df0b520bbc2a3 11-Sep-2012 Christopher Tate <ctate@google.com> Miscellaneous fixes for Settings

(1) It's okay to write literal null as a settings element value
(2) Properly convey the user handle in the put-for-user variant

Bug 7137201
Bug 7139826

Change-Id: I0ed77d65e8377f0e0580a2668f10b7167ad34928
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
9219874be99cc07660807cc5dc94b0d157ef8808 07-Sep-2012 Christopher Tate <ctate@google.com> Further fixup of migration to global settings

The Settings.System.STAY_ON_WHILE_PLUGGED element should have been
migrated to the global table, but wasn't. This CL does a couple of
things around dealing with this:

(1) Tidies up the migration tables outright, so that they correctly
reflect the intended final state

(2) Introduces the option of doing a key migration only if the element
has not yet been moved to the new table, to allow for safe retry-
-with-ignore. This will make it easy to make any future alterations
to the global vs per-user association of individual elements

(3) Migrates the STAY_ON_WHILE_PLUGGED element if it hasn't been already.

Bug 7126575

Change-Id: Ic5fa9ba45f11b09270bd5bc94c26fbbd84abc749
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
06efb530a479ea12398c1b3ee4b80e2ac85a1680 25-Aug-2012 Christopher Tate <ctate@google.com> Per-user settings

Each user has its own Settings.System.* and Settings.Secure.* namespace now. In
addition, this CL introduces the new Settings.Global.* namespace, which contains
a number of previously-elsewhere named settings entities; these Global.* entities
are common to all users. Because these elements have been moved from their prior
existence in the other namespaces, attempts to access them under their old names
and namespaces are detected and redirected (with appropriate compile-time and
logging messages) to their new homes.

The new Global.* namespace can only be written by system-level code, just like
the existing Secure.* namespace. If an app attempts to write a key that was
previously in the System.* namespace but has been moved to the Global.* namespace,
then a warning is logged and no write is performed; the action is a no-op. (The
app is explicitly not crashed, to avoid breaking well-behaved apps that can't
know any better.)

There is also now a hidden API for getting/setting settings entities associated
with a user other than the caller's. Reading/writing data for a user other than
yourself requires the signature-level INTERACT_ACROSS_USERS_FULL permission.

Manipulating data for a different user cannot be done via the ContentProvider
query() / insert() APIs; you must use the Settings.get/put APIs for that degree
of control. In general, use of the get/set API is *strongly* preferred over
query-type access to Settings.

Bug 6985398

Change-Id: Ibee54ddff99fb847c8c2479c23b50f1e7524d724
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
47847f3f4dcf2a0dbea0bc0e4f02528e21d37a88 23-Mar-2012 Jeff Brown <jeffbrown@google.com> Support enabling WAL using a flag when DB is opened.

Using enableWriteAheadLogging() to enable WAL is inefficient because
we previously disabled WAL mode when the database was opened.
Switching from WAL to PERSIST then back to WAL is inefficient
and could slow down application launch time. It would be better
to leave the database in WAL mode when we open it to begin with.

To do that, we need to know ahead of time whether we will want to
have WAL enabled for the newly opened database.

Using this flag also reduces the chance that we will encounter
an error enabling WAL mode due to there being other open connections
to the database.

Bug: 6124556
Change-Id: I38ec7a528baeda9f1ef77e25e88b3ca4b6296200
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
32c80a27dae4a3094f647bb4d97b27a0eb3b985e 26-Feb-2011 Jesse Wilson <jessewilson@google.com> Handle rename of LruCache.entryEvicted to entryRemoved

Change-Id: I50e5a8d8c35c4431f42c7483172447ba0e4e125b
http://b/3461302
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
0c7faeee47e7629f2d23a2e3b25bc4f121252080 10-Feb-2011 Jesse Wilson <jessewilson@google.com> Adopt LruCache in SettingsProvider.

Change-Id: I223ed2a4bd90234ea7e3447f19e18c68beae2763
http://b/3184897
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
01a479ccc4c8d13dc56a2eced4055a7864a7abc3 11-Jan-2011 Vasu Nori <vnori@google.com> bug:3339065 enable sqlite concurrency enhancing feature on settingsprovider

why is settingsprovider doing getReadbleDatabase() in onCreate() method?
it shoul do getWritableDatabse() so that sqlite's WAL
feature can be enabled on it.

Change-Id: I60e46ce240a6474bbb50ab26fb1d979242b0c9ad
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
9bb4ec484b9b9518bf5b17484dcb50727c58b5d1 24-Sep-2010 Nick Kralevich <nnk@google.com> Use the default SecureRandom provider.

Don't be tricky when trying to set the seed for the secure
random number generator. Setting the seed manually eliminates
the internal randomization the SecureRandom class does automatically,
reducing randomness. Just use the default seed, which is designed
to be safe.

Change-Id: I5747c2b3a10cf04e33d2202195951ed5cb82b2fe
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
3a2952baf1151f3d96d46cb3bbed600a087e14e8 27-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> Fix some bugs in SettingsProvider that I introduced the other day.

BUG=2953979

Change-Id: Ic9813e0ce629c56050d626ed52de67e6ab1ab07e
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
f366a9b007909cc6d214fbee26a97e880734a094 25-Aug-2010 Brad Fitzpatrick <bradfitz@android.com> Negatively cache settings and proactively slurp settings into cache.

The settings database cache is tiny (or should be tiny) and can be
slurped into memory. Once it's in memory and we know we have it all
we can avoid going to disk at all for keys not in the cache.

This is a big percentage of the StrictMode violations & latency.

Change-Id: I649411be0c40d348f58376ccfb3eda059fd69fbc
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
a695cbc94355017d02a3a6c17d866776a8eee24c 19-Aug-2010 Doug Zongker <dougz@android.com> am 0fe27cf5: make android_id random seed depend on time as well as ro.serialno

Merge commit '0fe27cf5bd1407bc7b4eabefaa91ff535582badc' into gingerbread

* commit '0fe27cf5bd1407bc7b4eabefaa91ff535582badc':
make android_id random seed depend on time as well as ro.serialno
0fe27cf5bd1407bc7b4eabefaa91ff535582badc 19-Aug-2010 Doug Zongker <dougz@android.com> make android_id random seed depend on time as well as ro.serialno

Change-Id: I0a48aacd8da30896d91fa05b7791335e6ed751e5
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
e339464f1c8efe7e53b761cf44ff5be6e537ecad 13-Jul-2010 Dianne Hackborn <hackbod@google.com> am 1bcb6658: Merge "Fix issue #2834005: Android Settings.Secure bypass" into froyo

Merge commit '1bcb665825dc97789e8c1b892ec4298fd0b8c552' into gingerbread

* commit '1bcb665825dc97789e8c1b892ec4298fd0b8c552':
Fix issue #2834005: Android Settings.Secure bypass
24117ce3ae32c40798d2d9bda80675814f76730d 13-Jul-2010 Dianne Hackborn <hackbod@google.com> Fix issue #2834005: Android Settings.Secure bypass

Change-Id: Ic4f14e2ff5c2b4f623405d30389863a9e3e82572
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
5ebaf10693725c9dc48219c3c65945b84d74692f 22-Apr-2010 The Android Open Source Project <initial-contribution@android.com> merge from open-source master

Change-Id: I2a3a06f0bd3530f9c0d3cb64ca6a87913649d64b
bdc7f891cf47c077c26ef418dbea23c04820c152 22-Apr-2010 Mike Lockwood <lockwood@android.com> Fix broken logic in SettingsProvider.parseProviderList.

We were accidentally stripping both leading and trailing commas
when removing a provider from the enabled provider list.

Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
547a96bc12f25f585271c678395d4c991f08c52d 10-Mar-2010 Brad Fitzpatrick <bradfitz@android.com> SettingsProvider: dup-suppress from cache.

On insert(), check to see if the value is redundant by checking if
it's the same value already in our cache (but without faulting it in
to check). If so, avoid hitting sqlite or spamming all the
notification listeners with such uselessness.

This reportedly is happening a fair bit.

Change-Id: If58feb3ff1d00027dd927e0900087388cbcd72ae
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
342984a17ddd010381c462066e33e18354b79e4f 10-Mar-2010 Brad Fitzpatrick <bradfitz@android.com> SettingsProvider: defensively cap size of settings kept cached in memory.

Change-Id: I50289ece2d7f5f50d2ea2efbacac7a0bb1483bf6
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
1bd62bd3ca4d098196e91b43799d4010c1d26623 09-Mar-2010 Brad Fitzpatrick <bradfitz@android.com> Cache hot settings in-memory in the SettingsProvider.

This brings down Settings lookups to 0.5 ms on sholes. (down from
~10.5 ms originally, and ~2.5 ms after the ContentProvider.call()
interface)

Change-Id: Ibde7c3d21e0b0e5714714a2075f314726edfc19d
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
4528186e0d65fc68ef0dd1941aa2ac8aefcd55a3 06-Mar-2010 Christopher Tate <ctate@google.com> Refactor android.backup => android.app.backup

Change-Id: I0b21316ff890d7f3c7d4b82837bb60670724c2e8
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
1877d0158b529663b8315482e7346a7bcaa96166 05-Mar-2010 Brad Fitzpatrick <bradfitz@android.com> Add "call" method on ContentProvider.

This permits implementing interfaces which are faster than using
remote Cursors. It then uses it for Settings & SettingProvider, which
together account for ~50% of total ContentProvider event loop stalls
across Froyo dogfooders.

For fetching Settings this looks like it should reduce average
Settings lookup from 10 ms to 0.4 ms on Sholes, once the
SettingsProvider serves most gets from in-memory cache. Currently it
brings the Sholes average down from 10ms to 2.5 ms while still using
SQLite queries on each get.
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
21f1bd17b2dfe361acbb28453b3f3b1a110932fa 20-Feb-2010 Dianne Hackborn <hackbod@google.com> Fix issue #2438980: Implement package watcher for voice recognizer service setting

I am getting tired of writing package monitor code, realized this is missing in
a number of places, and at this point it has gotten complicated enough that I
don't think anyone actually does it 100% right so:

Introducing PackageMonitor.

Yes there are no Java docs. I am still playing around with just what this
thing is to figure out what makes sense and how people will use it. It is
being used to fix this bug for monitoring voice recognizers (integrating the
code from the settings provider for setting an initial value), to replace
the existing code for monitoring input methods (and fix the bug where we
wouldn't remove an input method from the enabled list when it got
uninstalled), to now monitor live wallpaper package changes (now allowing
us to avoid reverting back to the default live wallpaper when the current
one is updated!), and to monitor device admin changes.

Also includes a fix so you can't uninstall an .apk that is currently enabled
as a device admin.

Also includes a fix where the default time zone was not initialized early
enough which should fix issue #2455507 (Observed Google services frame work crash).

In addition, this finally introduces a mechanism to determine if the
"force stop" button should be enabled, with convenience in PackageMonitor
for system services to handle it. All services have been updated to support
this. There is also new infrastructure for reporting battery usage as an
applicatin error report.
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
4f8ff39c1e2448d44ac900e04f9348f9d2aeaaf5 03-Feb-2010 Doug Zongker <dougz@android.com> use device serial number to seed RNG for generating ANDROID_ID

Change-Id: I1bcc55f1309cb908803bc42084846a046041eda6
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
aed8f8eb1491a21c8c71d39258b70edb74533a62 08-Jan-2010 Doug Zongker <dougz@android.com> remove Settings.Gservices

Move the last few keys to secure settings, and delete the Gservices
table.

Change-Id: Ie3ba45aa8c1f220824aa027c547cb82884452eb5
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
edc5189c33de03f3e2f5f73edc0e007992b933c9 07-Jan-2010 Doug Zongker <dougz@android.com> change remaining frameworks/base Gservices to Secure settings

Change-Id: I61bdb05a2526523700c2833154d5a4133881ef10
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
c70239e84d5024c65728ba74fe74c7394b34ac65 17-Dec-2009 Fred Quintana <fredq@google.com> changed SettingsProvider to manage the androidid itself
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
69f593ccb7414ee98991b1da1a4bfbd9951e3570 28-Jul-2009 Marco Nelissen <marcone@google.com> Support for selection of silent ringtone from the ringtone picker.
This doesn't actually enable that, but adds the necessary code to make it work when enabled, and cleans up some ringtone related code.
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
c6f81c6716c634317c69343fc2fd9a2fe6a2c034 09-Jul-2009 Android (Google) Code Review <android-gerrit@google.com> am d1e5e3ff: Merge change 6639 into donut

Merge commit 'd1e5e3ffc22478bad8525dec4f1c6d57fe0ad368'

* commit 'd1e5e3ffc22478bad8525dec4f1c6d57fe0ad368':
Restore audio settings and wifi.
d158214511a3c04753de04fa6389e46d33135c38 09-Jul-2009 Amith Yamasani <yamasani@google.com> Restore audio settings and wifi.

Optimize backups by writing an entity only if the checksum of the data has changed.
Call into the hidden AudioService API to apply changed audio settings.
After restoring wifi data, make sure that the permissions and ownership are set
properly for the supplicant process to access it.
Locale isn't restoring properly - TODO added.
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
2eac99ccbcdcc91b69c04ea2eb03f4cba961c17c 08-Jul-2009 -b master <yamasani@google.com> resolved conflicts for merge of d6fe243c to master
8823c0a8c68fe669c21c539eef9fc6541f0c7494 07-Jul-2009 Amith Yamasani <yamasani@google.com> Backup / Restore locale preference.

Also backup development settings MOCK_LOCATION and USB_DEBUGGING.
Backup and restore more of the Audio settings. Won't work yet without a reboot.
Disable Wifi supplicant restore temporarily. It seems to be disabling Wifi due to
permissions problems.
Don't restore Ringtones.
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
501eec92f9f4f206ad7972c63f2d0ef0285d8e34 06-Jul-2009 -b master <yamasani@google.com> Revert "hand rolled out 220f4d633be1098e7887dbd06f179138bf19f1ad due to interface changes on master, the change will need to be made again"

This reverts commit f8e3ba5bfad14f3037d72eb6243258c13169cbd8.
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
f8e3ba5bfad14f3037d72eb6243258c13169cbd8 03-Jul-2009 The Android Open Source Project <initial-contribution@android.com> hand rolled out 220f4d633be1098e7887dbd06f179138bf19f1ad due to interface changes on master, the change will need to be made again
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
133ec72f2480a65a02c8e1e5d9540796a0d05895 03-Jul-2009 Android (Google) Code Review <android-gerrit@google.com> am 288fe16c: Merge change 6043 into donut

Merge commit '288fe16c20e2c20556839046d38c487b0b18735c'

* commit '288fe16c20e2c20556839046d38c487b0b18735c':
System and Secure settings backup.
220f4d633be1098e7887dbd06f179138bf19f1ad 02-Jul-2009 Amith Yamasani <yamasani@google.com> System and Secure settings backup.

This backs up the basic system and secure settings. THe restoration doesn't
take effect immediately. You many need to restart the runtime to see all
restored values take effect.
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
6976dca6c89d4d3ff986e46b6eedebdbdd656b0c 19-Jun-2009 Android (Google) Code Review <android-gerrit@google.com> am 6afe8133: Merge change 4720 into donut

Merge commit '6afe81339ed973f1ef4a6c30110d5ce3b001ea4c'

* commit '6afe81339ed973f1ef4a6c30110d5ce3b001ea4c':
Fix string formatters in SettingsProvider SecurityException message.
31a88fac91cbdddb2ba63b0557cfd18b31d5eaac 19-Jun-2009 Brett Chabot <brettchabot@android.com> Fix string formatters in SettingsProvider SecurityException message.
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
6be4025b1290e257a8d9142caba5bc7df72afab3 19-Jun-2009 Android (Google) Code Review <android-gerrit@google.com> am 2810f681: Merge change 4694 into donut

Merge commit '2810f681991d1beb5ceb3515159f9fad3cc341d5'

* commit '2810f681991d1beb5ceb3515159f9fad3cc341d5':
Make SettingsProviders SecurityException messages more verbose.
16dd82cfdc879b7c3e51b19e54c70dbf78e8d697 19-Jun-2009 Brett Chabot <brettchabot@android.com> Make SettingsProviders SecurityException messages more verbose.
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
48554fc78e981590708cc2cb78ce3c09642e2c4d 03-Apr-2009 Mike Lockwood <> Merge branch 'readonly-p4-master'
bd2a7126e5b42e022228c6aac25e95b671e5263b 03-Apr-2009 Mike Lockwood <> AI 144415: am: CL 144372 Cleanup Settings support for enabling and disabling location providers:
LocationManagerService now listens for changes to settings,
making LocationManager.updateProviders() unnecessary.
Removed LocationManager.updateProviders()
Added Settings.Secure.setLocationProviderEnabled(), which is a thread-safe way
of enabling or disabling a single location provider.
This is safer than reading, modifying and writing the LOCATION_PROVIDERS_ALLOWED directly.
BUG=1729031
Original author: lockwood

Automated import of CL 144415
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
9637d474899d9725da8a41fdf92b9bd1a15d301e 03-Apr-2009 Mike Lockwood <> AI 144372: Cleanup Settings support for enabling and disabling location providers:
LocationManagerService now listens for changes to settings,
making LocationManager.updateProviders() unnecessary.
Removed LocationManager.updateProviders()
Added Settings.Secure.setLocationProviderEnabled(), which is a thread-safe way
of enabling or disabling a single location provider.
This is safer than reading, modifying and writing the LOCATION_PROVIDERS_ALLOWED directly.
BUG=1729031

Automated import of CL 144372
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
2a73de7b21a89aa2ba4c254d28658b49793425b2 18-Mar-2009 Jean-Baptiste Queru <jbq@google.com> Merge commit 'remotes/korg/cupcake' into merge

Conflicts:
core/java/android/view/animation/TranslateAnimation.java
core/jni/Android.mk
core/res/res/values-en-rGB/strings.xml
libs/audioflinger/AudioFlinger.cpp
libs/surfaceflinger/LayerScreenshot.cpp
packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
9066cfe9886ac131c34d59ed0e2d287b0e3c0087 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
074da8f9aa424b25d84f4e4eb762ca534ea96716 25-Feb-2009 James Wylder <jbob0823@gmail.com> Change scope on SettingsProvider.mDatabaseHelper and DatabaseHelper
This change will allow the DatabaseHelper to be inheritted and extended
without the need to make futher changes to the existing implementation.
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
d24b8183b93e781080b2c16c487e60d51c12da31 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
f013e1afd1e68af5e3b868c26a653bbfb39538f8 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
54b6cfa9a9e5b861a9930af873580d6dc20f773c 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java