Commit Graph

1885 Commits

Author SHA1 Message Date
Nick Kralevich
73f2d3c79e Error on conflicting <uses-permission>
Don't install packages where we have multiple, conflicting
<uses-permission> lines for the same permission.

For example, a package which contains:

<uses-permission android:name="android.permission.INTERNET" android:required="false" />
<uses-permission android:name="android.permission.INTERNET" android:required="true" />

will now fail to install.

In addition, this change slightly refactors the code, and creates a new
parseUsesPermission() method.

Change-Id: I0f4bb8b51dc4a0c5b73458a70f706e19829275d2
2013-04-04 17:12:00 -07:00
Nick Kralevich
38f130e19a PackageParser: ignore <uses-permission> android:required on older apps
Don't honor <uses-permission android:required="false"> on older apps.
Lots of apps in the wild are improperly using this, and we don't
want to break them.

Bug: 8528162
Change-Id: I6e0a10bc9feac58d13ef624239c6b91e9fc34590
2013-04-04 13:19:10 -07:00
Jeff Sharkey
0f8e8b03eb Merge "Warn when exposing file:// Uris beyond a process." into jb-mr2-dev 2013-04-03 23:28:07 +00:00
Kenny Root
75827d4a31 Merge "Add direct API to get ManifestDigest" into jb-mr2-dev 2013-04-03 20:27:43 +00:00
Jeff Sharkey
a14acd20b8 Warn when exposing file:// Uris beyond a process.
Check for file:// Uris inside Intents, ClipData, Notifications and
RemoteViews when StrictMode option is enabled.

Also introduces Intent.prepareToLeaveProcess() to uniformly handle
Intents about to leave an app process.

Bug: 8529070
Change-Id: I8efb43877cbc5f21eb029fc6492b3ee1415059ef
2013-04-03 11:45:44 -07:00
Justin Koh
d378ad74c6 Add global key configuration file
Add global key configuration file. A global key is one that is handled by
PhoneWindowManager before dispatching and sent to a given component via
broadcast instead of going to the foreground app.
Bug: 8510681

Change-Id: Ic6a8e559680d005613ed22874b27eb78bbfc4499
2013-04-02 18:09:27 -07:00
Kenny Root
6c918cec31 Add direct API to get ManifestDigest
This makes it faster for applications that don't want to collect all the
certificates but do want the AndroidManifest.xml digest.

Bug: 8528639
Change-Id: Ide9498d0981188960af194a9568387337c075bcc
2013-04-02 14:22:03 -07:00
Amith Yamasani
9e8ba8f273 Merge "Improve RestrictionEntry API" into jb-mr2-dev 2013-03-30 01:47:33 +00:00
Amith Yamasani
86118baa4f Improve RestrictionEntry API
More getters and setters, better naming.
New extra defined for returning a custom intent that handles showing the
   restrictions UI.

Change-Id: I2ee0cdb4edd99e71a9004ff5e929dbe243b45557
2013-03-29 17:28:47 -07:00
Matthew Xie
84e594f7db Merge "Unhide Bluetooth Low Energy public APIs" into jb-mr2-dev 2013-03-28 23:04:48 +00:00
Matthew Xie
ddf7e4756c Unhide Bluetooth Low Energy public APIs
Updated API headers. Add BluetoothManager to be retrieved by
context.getSystemService(Context.BLUETOOTH_SERVICE).
LE scan functions are placed in BluetoothAdapter
The GATT API are device driven instead of a profile-driver.
bug 8450158

Change-Id: I424a4cedaac3ef8120a05996500008dd210d2553
2013-03-28 15:36:10 -07:00
kmccormick
80ab68ce23 am 5c3ddcd1: am 425c3d5f: am 99049335: am 3ed65cb3: am 689e827a: Merge "Doc update: superceeded > superseded" into jb-mr1.1-docs
* commit '5c3ddcd14b79c4737ea06f68d8efd39543d60382':
  Doc update: superceeded > superseded
2013-03-28 15:30:46 -07:00
kmccormick
5c3ddcd14b am 425c3d5f: am 99049335: am 3ed65cb3: am 689e827a: Merge "Doc update: superceeded > superseded" into jb-mr1.1-docs
* commit '425c3d5f59f1e315cdbdd5f7530c4380aabf76ab':
  Doc update: superceeded > superseded
2013-03-28 15:27:54 -07:00
kmccormick
425c3d5f59 am 99049335: am 3ed65cb3: am 689e827a: Merge "Doc update: superceeded > superseded" into jb-mr1.1-docs
* commit '99049335a604cae3f515fce32bc5f1b27fe8d29b':
  Doc update: superceeded > superseded
2013-03-28 15:26:25 -07:00
kmccormick
ac66b85a04 Doc update: superceeded > superseded
"Bug: 5935672"

Change-Id: Ie2324d00d454cf3f3f3ed422dea2017b8a7a4c54
2013-03-28 15:19:06 -07:00
Amith Yamasani
e494a81f9b Merge "Restricted account visibility" into jb-mr2-dev 2013-03-28 20:31:44 +00:00
kmccormick
24b8947f62 resolved conflicts for merge of 603f987f to jb-mr2-dev
Change-Id: I4a130dad9d4669799f5d477f67e0f9a6a04381ca
2013-03-27 19:23:51 -07:00
kmccormick
603f987f14 am 418172bf: am 19840a8d: am 65c66c74: am 6e6e861a: Merge "Doc change: Fix typo DONT_DELTE" into jb-mr1.1-docs
* commit '418172bf8823016785526b433801d44a4630f276':
  Doc change: Fix typo DONT_DELTE
2013-03-27 18:59:42 -07:00
kmccormick
418172bf88 am 19840a8d: am 65c66c74: am 6e6e861a: Merge "Doc change: Fix typo DONT_DELTE" into jb-mr1.1-docs
* commit '19840a8d40139a12469ef92c3541f2a433d5ae85':
  Doc change: Fix typo DONT_DELTE
2013-03-27 18:57:27 -07:00
Amith Yamasani
0ac1fc9d23 Restricted account visibility
When accounts are shared to a restricted/limited user, apps can
opt-in to viewing accounts of a certain type. Other shared accounts
are not visible to the app.

App would specify the account type in the manifest <application> tag
with the attribute restrictedAccountType="foo.bar", where "foo.bar"
is the account type as defined by the authenticator.

Change-Id: I7586da04d6d6d32aae15adc6b1366f325bb07384
2013-03-27 18:56:08 -07:00
kmccormick
30498b4182 Doc change: Fix typo DONT_DELTE
"Bug: 8273156"

Change-Id: I6ba2e780d1a8c2b7d1771e93125a10b228227020
2013-03-27 17:56:13 -07:00
Nick Kralevich
98ea19ed24 Merge "Reenable optional permissions parsing and expose APIs" into jb-mr2-dev 2013-03-28 00:13:45 +00:00
Nick Kralevich
5992898755 Merge "Add buildPermissionRequestIntent to PackageManager" into jb-mr2-dev 2013-03-28 00:11:26 +00:00
Nick Kralevich
828c16f140 Reenable optional permissions parsing and expose APIs
Modify the package parsing code to understand optional permissions
(android:required="false"). This is essentially a rollback of
e824120016 with some minor changes.

Expose the requestPermission API to third party apps. This allows
an app to request an Intent which, when passed to
startActivityForResult, will prompt the user to approve permissions
for an app.

In the event we decide to not launch with this feature, this change
can be rolled back.

Change-Id: Ie3626deae9b16e510323f94a2c80377f7c84b26f
2013-03-27 16:57:33 -07:00
Nick Kralevich
035f80d7c7 Add buildPermissionRequestIntent to PackageManager
Add the buildPermissionRequestIntent API to PackageManager. This allows
an app to request an Intent which, when passed to
startActivityForResult, will prompt the user to approve permissions
for an app.

Currently, the API is @hide.  It will be unhidden in a future change.

Change-Id: I4ec677002afa799a6eb5c2657c28452c91012436
2013-03-27 16:55:27 -07:00
Dianne Hackborn
bf20aa767e Merge "Keep track of who has disabled applications." into jb-mr2-dev 2013-03-27 23:32:36 +00:00
Dianne Hackborn
3fa3c28a35 Keep track of who has disabled applications.
Change-Id: I2640d3dc2200b589e2beb42a43cc93efd090f06e
2013-03-27 12:01:52 -07:00
Chiao Cheng
972a9255a7 Merge "Allow leading slash in path argument for addURI() method." into jb-mr2-dev 2013-03-27 17:18:30 +00:00
Chiao Cheng
ef23bf198d Allow leading slash in path argument for addURI() method.
The original documentation for this class indicated a leading slash was possible
but the code did not support it.  Since then, the docs were changed to reflect
what the code does.

The purpose of this change is to allow the use of uri.getPath() as an argument.
With this change, the following can be done

matcher.addURI(ContactsContract.AUTHORITY,
        ContactsContract.CONTENT_FILTER_URI.getPath(), CONTACTS_FILTER)

instead of

matcher.addURI(ContactsContract.AUTHORITY,
        "contacts/filter", CONTACTS_FILTER)

Change-Id: I76a9e3133365be9fe7a8de86eae57f9eea1cd2a3
2013-03-26 11:20:47 -07:00
Robert Craig
0f40dc923c Add seinfo parsing to PackageManagerService.
This patch set allows the PMS to parse the
mac_permissions.xml file which contains the
seinfo values. Each package that is installed
on the device will be assigned an seinfo value
based on policy. This seinfo value will help label
the app process and data directory.  Modifications
include adjustments to ApplicationInfo.java
to store the seinfo tag per package as well as
adjustments to installd to communicate the seinfo
tag to libselinux.

Change-Id: I61ad1ea12fb6a9a6d0b108ec163bc4bf4c954b58
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
2013-03-25 17:30:08 -07:00
Geremy Condra
40a85bbc84 am 4bcea122: Merge "Add seinfo parsing to PackageManagerService."
* commit '4bcea1222ce447d9969d12927995ffdfad7c8322':
  Add seinfo parsing to PackageManagerService.
2013-03-25 14:49:25 -07:00
Robert Craig
d3f8d0333c Add seinfo parsing to PackageManagerService.
This patch set allows the PMS to parse the
mac_permissions.xml file which contains the
seinfo values. Each package that is installed
on the device will be assigned an seinfo value
based on policy. This seinfo value will help label
the app process and data directory.  Modifications
include adjustments to ApplicationInfo.java
to store the seinfo tag per package as well as
adjustments to installd to communicate the seinfo
tag to libselinux.

Change-Id: I61ad1ea12fb6a9a6d0b108ec163bc4bf4c954b58
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
2013-03-25 06:33:03 -04:00
Dianne Hackborn
37f180b4a5 Merge "App ops: don't crash when provide read access is off." into jb-mr2-dev 2013-03-23 01:43:37 +00:00
Dianne Hackborn
9fa39bd255 App ops: don't crash when provide read access is off.
If the caller supplied an empty selection string (instead
of null) we would crash due to creating a bad SQLite statement.

Change-Id: I462803b80c81815ed9a3a320c23060daa28e8114
2013-03-22 18:42:14 -07:00
Dianne Hackborn
119bbc378d Implement #8323587, #8323342, #8323590: new features.
8323587: Add feature for supporting app widgets
8323342: Add feature for replacing the home screen
8323590: Add feature for supporting input methods

The app widget service looks for the app widget feature
and refuses to work if it doesn't exist.  I didn't do
this for the input method service because some devices
will probably want to still make use of that mechanism
without supporting third party input methods.

Change-Id: Ie3b089105e104f4d767cdb03cdbe4fdb1c17382e
2013-03-22 17:27:25 -07:00
Amith Yamasani
1eab5f2693 Fix javadoc breakage
Change-Id: I72df82a8855322145c870bd8db64da81533be4cc
2013-03-20 23:54:07 -07:00
Amith Yamasani
df2e92a535 Application restrictions API
Adds the ability for apps to export some restrictions. The restrictions
are presented in Settings based on the restriction type. The user's
selections are stored by UserManagerService and provided to the
target user's application as a list of RestrictionEntry objects which
contain the key, value(s).

Also introduce a manifest entry for system apps to request that the
app be automatically installed in all users, so that they cannot be
deselected by the owner user.

Shared account filtering for non-whitelisted apps.

Change-Id: I15b741e3c0f3448883cb364c130783f1f6ea7ce6
2013-03-20 22:29:59 -07:00
Dianne Hackborn
d468df73d5 Merge "Fix a bug where we could lose a loader content change." into jb-mr2-dev 2013-03-15 23:10:47 +00:00
Jeff Sharkey
93b04b91bc Merge "Avoid warnings about synthesized IDs." into jb-mr2-dev 2013-03-15 21:47:58 +00:00
Jeff Sharkey
47b50333c1 Avoid warnings about synthesized IDs.
Bug: 8153518
Change-Id: I5d638e17581f63c6d4a10ff6bc2c1bf9997a78b3
2013-03-15 14:46:52 -07:00
Dianne Hackborn
ca614f78be Fix a bug where we could lose a loader content change.
If AsyncTaskLoader starts a background update due to a
content change, and that update is cancelled, we drop the
data when it finally arrives and forget that the content changed.
If we later come back to the loader, we then end up showing
stale data because we don't know that we still need to update
due to the old content change.

This change adds a couple new APIs to Loader to deal with the
time between when you ask for whether there is a content change
and finally either commit the data or cancel the update.
AsyncTaskLoader is changed to make use of this so that it doesn't
lose changes.

Change-Id: I3866236b1c22bb9138f2d9f6032b126aeaee2e6e
2013-03-14 19:17:00 -07:00
Scott Kennedy
da2223f897 Remove a method
It was only being called in one location, and the parameter was being
ignored.

Change-Id: Ia853dd8d3898ac3e4c4b2fb3a51d103844b57ca1
2013-03-14 10:47:10 -07:00
Dianne Hackborn
5d122d96a5 Better documentation on permission checking in ContentProvider.call().
Change-Id: I4a85fd17362c2a32e2b1365fcc07ef0336521616
2013-03-13 15:48:12 -07:00
Bjorn Bringert
133e2db873 Merge "Hide VOICE_ASSIST intent DO NOT MERGE" into jb-mr2-dev 2013-03-13 13:28:01 +00:00
Dianne Hackborn
c895be7bc6 Implement limited shared libraries in apks.
You can now declare shared libraries in apks that are
on the system image.  This is like the existing mechanism
of using raw jar files as shared libraries, but since they
are contained in an apk the library can actually be updated
from the Play Store.  And this even (mostly) works.

There are some deliberate limitations on this feature.  A
new shared library *must* be declared by an apk on the system
image.  Installing an update to a system image apk does not
allow you to add new shared libraries; they must be defined
by everything on the base system image.  This allows us to
get rid of a lot of ugly edge cases (shared libraries that were
there disappearing after an update is uninstalled for example)
and give some brakes on apps that happen to be pre-installed
on devices from being able to throw in new shared libraries
after the fact.

In working on this, I ran into a recently introduced bug where
uninstalling updated to system apps would fail.  This was done
to allow for the new restricted users that don't have all
system apps, but conflicts with the existing semantics for
uninstalling system apps.  To fix this I added a new uninstall
flag that lets you switch on the new mode if desired.

Also to implement the desired logic for limitations on declaring
new shared libraries in app updates, I needed to slightly tweak
the initial boot to keep the Package object for hidden system
packages associated with their PackageSetting, so we can look at
it to determine which shared libraries are allowed.  I think
this is probably more right than it was before -- we already
need to parse the package anyway, so we have it, and when you
install an update to a system app we are in this same state
until you reboot anyway.

And having this fixed also allowed me to fix another bug where
we wouldn't grant a new permission to an updated app if its
system image version is updated to request the permission but
its version is still older than whatever is currently installed
as an update.  So that's good.

Also add new sample code showing the implementation of an apk
shared library and a client app using it.

Change-Id: I8ccca8f3c3bffd036c5968e22bd7f8a73e69be22
2013-03-12 12:51:38 -07:00
Bjorn Bringert
964e7d2549 Hide VOICE_ASSIST intent DO NOT MERGE
Bug: 8289964
Change-Id: I49874f379647ff4e85402a298b4181923212a0aa
2013-03-12 19:35:57 +00:00
Jeff Sharkey
f2afddb57d Merge "Handle corrupt RegisteredServicesCache XML." into jb-mr2-dev 2013-03-11 20:25:48 +00:00
Jeff Sharkey
293ad6c674 Handle corrupt RegisteredServicesCache XML.
Avoid getting stuck in infinite loop.

Bug: 8360183
Change-Id: I81728dcfbc35b456c9166cf5c5175d0a376df56f
2013-03-11 13:22:29 -07:00
Elliott Hughes
5043dc2063 am bf8a663c: am 3f7a4990: Merge "Improve the Resource.getQuantityString/getQuantityText documentation."
* commit 'bf8a663c53454f8b8cd7e07344316981022efa10':
  Improve the Resource.getQuantityString/getQuantityText documentation.
2013-03-08 14:44:40 -08:00
Elliott Hughes
bf8a663c53 am 3f7a4990: Merge "Improve the Resource.getQuantityString/getQuantityText documentation."
* commit '3f7a49904cef7ea14808590b63b115a4381537a1':
  Improve the Resource.getQuantityString/getQuantityText documentation.
2013-03-08 13:59:59 -08:00