Commit Graph

1419 Commits

Author SHA1 Message Date
Dianne Hackborn
27ff913d56 Work on more low memory reporting to apps.
There are now some new trim memory levels that are sent to
non-background applications as RAM becomes low.

There is a new API for an application to retrieve information
about memory trimming and such on demand.

Fixed various checks against the memory trim level to be
robust (not compare against exact values).

Change-Id: Ifd1c6151124350168aef20a94e517166fd2e03eb
2012-03-06 18:46:32 -08:00
Dianne Hackborn
4f03d35f9c Merge "Fix issues #6103378 and #5959515." 2012-03-06 10:34:18 -08:00
Dianne Hackborn
6569625bee Fix issues #6103378 and #5959515.
Change-Id: I762d86dd7119c9ac02f4b8803c4a250c6b7637c7
6103378: APR: IOOBE at android.content.pm.PackageParser.generatePackageInfo(
    PackageParser.java:355)
5959515: PackageManager doesn't validate className in setComponentEnabledSetting
2012-03-05 18:49:21 -08:00
Nick Pelly
3edd8f06cb Merge "Clarify docs for the thread used in BroadcastReceiver.onReceive()" 2012-03-05 15:57:13 -08:00
Nick Pelly
de88dba17c Clarify docs for the thread used in BroadcastReceiver.onReceive()
Change-Id: Ib6c0da5d0ca2fc95b26b230b306f205a9942cf03
2012-03-02 15:25:31 -08:00
Jean-Baptiste Queru
ab38500d9c am dbc591e2: am c69d6134: am 6ae4fe94: am 9303919d: Merge "Adds documentation for ContentResolver notifyChange()"
* commit 'dbc591e27686486c732fca2f94fde645e3487b7a':
  Adds documentation for ContentResolver notifyChange()
2012-03-01 15:35:33 -08:00
Jean-Baptiste Queru
6ae4fe945b am 9303919d: Merge "Adds documentation for ContentResolver notifyChange()"
* commit '9303919d7d837dedf16f09ace0013e62670568e7':
  Adds documentation for ContentResolver notifyChange()
2012-02-29 15:44:34 -08:00
Christopher Tate
8662cab5c6 Merge: Introduce UpdateLocks
An "UpdateLock" works similarly to a wake lock in API: the caller is
providing a hint to the OS that now is not a good time to interrupt
the user/device in order to do intrusive work like applying OTAs.
This is particularly important for headless or kiosk-like products
where ordinarily the update process will be automatically scheduled
and proceed without user or administrator intervention.

UpdateLocks require that the caller hold the new signatureOrSystem
permission android.permission.UPDATE_LOCK.  acquire() and release()
will throw security exceptions if this is not the case.

The "is now convenient?" state is expressed to interested parties
by way of a sticky broadcast sent only to registered listeners.  The
broadcast is protected; only the system can send it, so listeners
can trust it to be accurate.  The broadcast intent also includes a
timestamp (System.currentTimeMillis()) to help inform listeners that
wish to implement scheduling policies based on when the device became
idle.

The API change here is a tiny one: a dump(PrintWriter) method has been
added to the TokenWatcher class to facilitate getting information out
of it for dumpsys purposes.  UpdateLock itself is still @hide.

Bug 5543442

Change-Id: I3709c831fc1883d7cb753cd2d3ee8e10a61e7e48
2012-02-29 14:05:24 -08:00
Fabrice Di Meglio
3fb824bae3 Fix bug #5217606 LocaleUtils constants TEXT_LAYOUT_DIRECTION_LTR_DO_NOT_USE and TEXT_LAYOUT_DIRECTION_RTL_DO_NOT_USE should be renamed
- replace them by the View constants

Change-Id: I7c2bf0213319247d3db369b6f7c36771fdf3e509
2012-02-28 18:08:11 -08:00
Dianne Hackborn
e639da7baa New development permissions.
These are permissions that an application can request, but won't
normally be granted.  To have the permission granted, the user
must explicitly do so through a new "adb shell pm grant" command.

I put these permissions in the "development tools" permission
group.  Looking at the stuff there, I think all of the permissions
we already had in that group should be turned to development
permissions; I don't think any of them are protecting public APIs,
and they are really not things normal applications should use.

The support this, the protectionLevel of a permission has been
modified to consist of a base protection type with additional
flags.  The signatureOrSystem permission has thus been converted
to a signature base type with a new "system" flag; you can use
"system" and/or "dangerous" flags with signature permissions as
desired.

The permissions UI has been updated to understand these new types
of permissions and know when to display them.  Along with doing
that, it also now shows you which permissions are new when updating
an existing application.

This also starts laying the ground-work for "optional" permissions
(which development permissions are a certain specialized form of).
Completing that work requires some more features in the package
manager to understand generic optional permissions (having a
facility to not apply them when installing), along with the
appropriate UI for the app and user to manage those permissions.

Change-Id: I6571785c6bb5f6b291862b7a9be584885f88f3a5
2012-02-23 16:39:15 -08:00
Amith Yamasani
67cf7d314b Fix Power Control widget
Some changes in AppWidgetService were interfering with widget permissions.

Added some hidden methods in Context to communicate the requesting user
information instead of using the calling uid.

Bug: 6019296
Change-Id: I5e519fd3fbbfa5b3fcc5c297b729c671dac8e7c7
2012-02-16 15:03:42 -08:00
Amith Yamasani
37ce3a8af6 Multi-user - wallpaper service
- Allow each user to have their own wallpaper (live or static).
- Migrate old wallpaper on upgrade.
- Update SystemBackupAgent to backup/restore from primary user's
  new wallpaper directory.

Reduce dependency on Binder.getOrigCallingUser() by passing the
userId for bindService.

Change-Id: I19c8c3296d3d2efa7f28f951d4b84407489e2166
2012-02-10 14:34:07 -08:00
Mike Lockwood
b01e8bf57b New Serial Manager API:
SerialManager: provides access to serial ports
SerialPort: for reading and writing data to and from serial ports

IO with both array based and direct ByteBuffers is supported.

Accessing serial ports requires android.permission.SERIAL_PORT permission

Each platform must configure list of supported serial ports in the
config_serialPorts resource overlay
(this is needed to prevent apps from accidentally accessing the bluetooth
or other system UARTs).

In addition, the platform uevent.rc file must set the owner to the
/dev/tty* files to "system" so the framework can access the port.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2012-02-10 10:51:19 -08:00
Dianne Hackborn
a0c283eac3 Add new feature for running services in "isolated" sandbox processes.
This reserves a range of uids (for each user) in which these processes
run.  These uids are not associated with an application, so they
effectively run with no permissions.  When a Service requests to
run in such a process through android:isolatedProcess="true", each
time it is brought up a new isolated process is started with its
own unique uid.

What we have so far gives us the basic infrastructure; more work
remains to further lock down what these uids have access to.

Change-Id: Ibfd27c75619cba61f528f46ede9113f98dc5f45b
2012-02-09 11:18:33 -08:00
Amith Yamasani
1ef7d13172 Merge "Multi-user - 1st major checkin" 2012-02-03 12:04:40 -08:00
Amith Yamasani
742a671273 Multi-user - 1st major checkin
Switching activity stacks
Cache ContentProvider per user
Long-press power to switch users (on phone)

Added ServiceMap for separating services by user
Launch PendingIntents on the correct user's uid
Fix task switching from Recents list
AppWidgetService is mostly working.

Commands added to pm and am to allow creating and switching profiles.

Change-Id: I15810e8cfbe50a04bd3323a7ef5a8ff4230870ed
2012-02-03 12:01:47 -08:00
Jeff Brown
4c1241df8f Rename CancellationSignal using preferred spelling.
Bug: 5943637
Change-Id: I12a339f285f4db58e79acb5fd8ec2fc1acda5265
2012-02-02 18:02:16 -08:00
Jeff Brown
9dbfc331b4 Merge "Support automatic cancellation of Loaders." 2012-02-01 16:31:48 -08:00
Jeff Brown
b19a71a20a Support automatic cancellation of Loaders.
Change-Id: I18d3f49e413f48fcdd519d15e99c238ad54d35b9
2012-02-01 16:30:14 -08:00
Christopher Tate
f46723b41f Implement background vs foreground broadcasts
Before now, receiving a broadcast would cause a process to be hoisted
to foreground priority / cgroup.  This is no longer the case: broadcasts
by default are handled in the background, with a suitably increased
timeout interval.  When a given broadcast needs to be dealt with in a
more timely manner, the issuer can set the new FLAG_BROADCAST_FOREGROUND
flag on the Intent, which will produce the old foreground-priority
behavior.

To avoid priority inversions, foreground broadcasts are tracked on a
separate outgoing queue and can be in flight simultaneously with a
background-priority broadcast.  If there is already a background-level
broadcast in flight to a given app and then a foreground-level one is
dispatched to that app, the app [and its handling of both broadcasts]
will be properly hoisted to foreground priority.

This change is also essentially the first step towards refactoring the
broadcast-handling portions of the Activity Manager into a more
independent existence.  Making BroadcastQueue a top-level class and
regularizing its operation viz the primary Activity Manager operation
is the next step.

Change-Id: If1be33156dc22dcce318edbb5846b08df8e7bed5
2012-02-01 14:36:34 -08:00
Dianne Hackborn
6c997a9e88 aapt now sorts the strings in the resource string pool.
In our current environment with very many translations, this can
save a lot of RAM -- for example over 200K in Gmail just by sorting
the strings in the Gmail .apk (not the framework).

Also add a new aapt command to print the contents of the resource
table string pool.

Change-Id: I1da037b3e2c377b890833ff57ab158965314ac48
2012-01-31 15:41:30 -08:00
Jeff Brown
2d2d7d6f42 Merge "Implement a cancelation mechanism for queries." 2012-01-27 17:37:24 -08:00
Jeff Brown
75ea64fc54 Implement a cancelation mechanism for queries.
Added new API to enable cancelation of SQLite and content provider
queries by means of a CancelationSignal object.  The application
creates a CancelationSignal object and passes it as an argument
to the query.  The cancelation signal can then be used to cancel
the query while it is executing.

If the cancelation signal is raised before the query is executed,
then it is immediately terminated.

Change-Id: If2c76e9a7e56ea5e98768b6d4f225f0a1ca61c61
2012-01-27 17:33:21 -08:00
Nick Pelly
dc828acd5f Merge "Add API's for normalizing MIME's and URI's." 2012-01-25 12:55:58 -08:00
Nick Pelly
ccae412ded Add API's for normalizing MIME's and URI's.
Helps developers create well-behaved intents:
- lower case MIME data type
- strip parameters from MIME content types
- lowercase URI scheme

The new API's are
normalizeAndSetType()
normalizeAndSetData()
normalizeAndSetDataAndType()
Uri.normalize()
normalizeMimeType()

Change-Id: Ib5c907897f39b1f705bcc4c9103ba1e6f316380b
2012-01-24 20:04:13 -08:00
Jeff Brown
655e66bceb Inform ContentObservers about the changed content Uri.
Added a new method ContentObserver.onChange(boolean, Uri) that
receives the changed content Uri.  This can help applications make
better decisions about how to interpret a change notification.

Change-Id: I8e35378b6485fe22c5bc240ba07557d269af0836
2012-01-23 17:28:29 -08:00
Jeff Brown
86de0590b9 Clean up content observer code.
Improved the documentation a little bit.

Fixed a bug in ContentService wherein if a ContentObserver was
passed as an argument and its deliverSelfNotifications() method
returned true, then notifyChange would tell all observers that
the change was a self-change even though it was only a self-change
from the perspective of the provided observer.

Deprecated ContentObservable.notifyChange since it is never
used and in general it shouldn't be because we want the notification
to be posted to the handler.

Change-Id: Idde49eb40777e011a068f2adae8a32f779dfb923
2012-01-23 13:01:18 -08:00
Steve Pomeroy
d7a1aada2d Adds documentation for ContentResolver notifyChange()
Adds clarifying documentation to ContentResolver#notifyChange() to
explain interaction with the sync framework.

Change-Id: Ia1a1ed173e230bc11aa778268749323536ca434f
Signed-off-by: Steve Pomeroy <steve@staticfree.info>
2012-01-18 16:15:59 -05:00
Alon Albert
cf12902719 Merge "Log global autosync on dumpsys Protect dumpsys from divide by zero" 2012-01-12 17:39:37 -08:00
Alon Albert
27096822e2 Log global autosync on dumpsys
Protect dumpsys from divide by zero

Change-Id: I3474f2f4b41643ef1e95cbcf835c96b66b13de38
2012-01-11 18:06:41 -08:00
Dianne Hackborn
32313b161f am d476c8b8: am d3be0a76: Merge "Unhide Resources APIs for getting resources at specific densities." into ics-mr1
* commit 'd476c8b8a8a6fadea7e72426d3e93c4e6b00e543':
  Unhide Resources APIs for getting resources at specific densities.
2012-01-09 16:51:52 -08:00
Dianne Hackborn
613989772f Unhide Resources APIs for getting resources at specific densities.
This adds Resources.getDrawableForDensity() and
Resources.getValueForDensity().  These are needed for applications
to correctly retrieve larger icons such as in launcher when
running on a tablet.  We had already exposed the APIs to tell the
application which density to use for app icons on the current
device, but didn't unhide these APIs that allowed you to
actually retrieve them.

This is safe to do without introducing a new API level (as long
as we do it soon) because we know these APIs already exist in
Android 4.0, and there is no reason for anyone to be removing
them when building a device.

Change-Id: I5138e5dc908197b66a98d20af73c5374cb5d41d3
2012-01-09 12:00:30 -08:00
Joe Fernandez
2b07267753 am 201469f5: am bb7f590a: Merge "docs: Add developer guide cross-references, Project ACRE, round 4" into ics-mr1
* commit '201469f54522436be79d4d6665721049bfc74320':
  docs: Add developer guide cross-references, Project ACRE, round 4
2011-12-22 15:59:34 -08:00
Joe Fernandez
3aef8e1d1b docs: Add developer guide cross-references, Project ACRE, round 4
Change-Id: I1b43414aaec8ea217b39a0d780c80a25409d0991
2011-12-22 15:08:23 -08:00
Joe Onorato
c6a7f358e8 Merge "Add a new ui mode for "appliance"" 2011-12-16 12:27:03 -08:00
Joe Onorato
44fcb83b38 Add a new ui mode for "appliance"
The idea is that this is a device which is more-or-less headless.  It
might have some limited interaction capabilities, but it's not something
that you want to rely on having.

Change-Id: Ib92f53a120bf83de781728011721a4859def7d9f
2011-12-15 16:16:14 -08:00
Marco Nelissen
18cb28756c Add ContentProvider.dump()
This is similar to the existing dump() facility for services.
ContentProviders can now implement dump() and that info will be shown
when running "dumpsys activity provider" and when taking a bugreport.

Change-Id: I33b3b132e3c4f920153355cc368eda2f725a715f
2011-12-15 12:13:59 -08:00
Romain Guy
18ca25be58 Merge "Generate even fewer GL commands" 2011-12-14 19:25:20 -08:00
Romain Guy
8f85e80b64 Generate even fewer GL commands
Change-Id: I0f4dcacb03ef5ee7f6ebd501df98bfead5f0a7f8
2011-12-14 19:23:32 -08:00
Dianne Hackborn
51a0e745ee am 13299a33: am 399f1df3: Merge "Fix some java docs." into ics-mr1
* commit '13299a33e14562a5de14c89ad058d28ab0cd9f37':
  Fix some java docs.
2011-12-14 18:21:29 -08:00
Dianne Hackborn
251fe26375 Fix some java docs.
Change-Id: I0eeba6f9108db74418063fba522ed3ef1c27ae95
2011-12-14 17:20:54 -08:00
Dianne Hackborn
df3c49ee2e am 2ad8a89b: am a1279586: Merge "SDK only: now that support lib is in SDK, we can link to it." into ics-mr1
* commit '2ad8a89b4b55f1cf8994e5b044d496d889839403':
  SDK only: now that support lib is in SDK, we can link to it.
2011-12-12 18:01:22 -08:00
Dianne Hackborn
7871badd5d SDK only: now that support lib is in SDK, we can link to it.
Update some of the platform documentation to directly link to
relevent support lib docs.  Yay!

Also improve BroadcastReceiver documentation to more clearly
discussion security around receivers, and how the support
lib's LocalBroadcastManager can help.

Change-Id: I563c7516d5fbf91ab884c86bc411aff726249e42
2011-12-12 15:39:50 -08:00
Joe Malin
7c918ad493 am 3eebad61: am 3744d1fa: am 9e2cf49f: Merge "DOC CHANGE: Add Content URI ref doc" into ics-mr0
* commit '3eebad61b4df7f5b4c898545aa7ec9076bc077d0':
  DOC CHANGE: Add Content URI ref doc
2011-12-07 11:33:01 -08:00
Joe Malin
3744d1faf5 am 9e2cf49f: Merge "DOC CHANGE: Add Content URI ref doc" into ics-mr0
* commit '9e2cf49fa360e70b33a870e9ae0b3eec11752972':
  DOC CHANGE: Add Content URI ref doc
2011-12-07 11:28:25 -08:00
Dianne Hackborn
deb86c63c3 am ec42750e: am 0c0120ef: Merge "Fix issue #5714517: App shortcuts can result in bad task intents" into ics-mr1
* commit 'ec42750e4d0e695515d078fb1f222c99a705fd93':
  Fix issue #5714517: App shortcuts can result in bad task intents
2011-12-05 19:20:45 -08:00
Dianne Hackborn
0c0120efa2 Merge "Fix issue #5714517: App shortcuts can result in bad task intents" into ics-mr1 2011-12-05 19:16:54 -08:00
Dianne Hackborn
f5b8671c34 Fix issue #5714517: App shortcuts can result in bad task intents
New API to let you build an Intent whose base configuration is correct,
but has an additional "selector" to pick out the specific app that you
would like launched.

Change-Id: Ide9db6dc60e2844b7696cfe09b28337fe7dd63db
2011-12-05 17:42:41 -08:00
Fred Quintana
e7851ea612 am f3f7d65b: am b5f2dfbc: Merge "By default ICS allows two syncs to run in parallel. Make it only do one at a time for devices that don\'t have much RAM as defined by the call ActivityManager.isLargeRAM()" into ics-mr1
* commit 'f3f7d65b650dec7f4eacefa1f0174fadfce5ec6e':
  By default ICS allows two syncs to run in parallel. Make it only do one at a time for devices that don't have much RAM as defined by the call ActivityManager.isLargeRAM()
2011-12-05 16:49:37 -08:00
Fred Quintana
33e4469417 By default ICS allows two syncs to run in parallel. Make it only
do one at a time for devices that don't have much RAM as
defined by the call ActivityManager.isLargeRAM()

Bug: 5713224
Change-Id: Ic8c42103f4031e1d7b1db797edcbbd7f7bac1387
2011-12-05 15:44:34 -08:00