History log of /frameworks/base/core/java/android/app/AppOpsManager.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
7b7c58b3842d47c4c8df4876e2e2248c58477d97 03-Dec-2014 Dianne Hackborn <hackbod@google.com> Work on issue #18572506: AppOps in-memory state is invalid after...

...uninstalling updates to a system app

Things seem to be working fine, however we were not as aggressive at
writing out the current state in this case as we probably should be.

Also introduce more features to the appops command, which are useful
for testing this.

Change-Id: I177a9cc0e16e98b76fee0d052d742e06842bb3f9
/frameworks/base/core/java/android/app/AppOpsManager.java
5064e7c70c54000abc0b37fda9caa8d71407f2f4 02-Sep-2014 Dianne Hackborn <hackbod@google.com> Add public constant for usage stats app op.

Change-Id: Ibc031b50e9fa4f1bd0955e0afd98e8b1bd77b905
/frameworks/base/core/java/android/app/AppOpsManager.java
05542603dd4f1e0ea47a3dca01de3999a9a329a9 11-Aug-2014 Jeff Davidson <jpd@google.com> Less intrusive VPN dialog and other UX tweaks.

-The ability to launch VPNs is now sticky; once approved by the user,
further approvals are not needed UNLESS the connection is revoked in
Quick Settings.

-The old persistent notification has been removed in favor of the new
Quick Settings UI.

-The name of the VPN app is now pulled from the label of the VPN
service rather than the app itself, if one is set.

Bug: 12878887
Bug: 16578022
Change-Id: I102a14c05db26ee3aef030cda971e5165f078a91
/frameworks/base/core/java/android/app/AppOpsManager.java
b5cf61be7c82392a6f34f53d97c8382d9a0f0b3a 19-Aug-2014 Adam Lesinski <adamlesinski@google.com> Add Shell command to set AppOps permissions

Change-Id: I6446543b27f0d2d2e69590a2807e713c6d5ccbbc
/frameworks/base/core/java/android/app/AppOpsManager.java
15f83c6f64e26a74acf9b75ce41d39870d5a5b7a 13-Aug-2014 Yorke Lee <yorkelee@google.com> Disable call log for users with DISALLOW_OUTGOING_CALLS restriction

Bug: 16217514
Change-Id: Iacd5699d0a540ca0e5a678662379bf8c611f7462
/frameworks/base/core/java/android/app/AppOpsManager.java
41c1ded7f042a4cf303479550b38fa66d7a18906 05-Aug-2014 Amith Yamasani <yamasani@google.com> Allow phone UID to export singleton providers

Also add a user variant of replacePreferredActivity for use
by SmsApplication.

Map user restrictions for SMS/MMS to AppOps perms.

Bug: 16681533
Change-Id: I3dfed5fc754e33bb51c6f571851653a7c2770e46
/frameworks/base/core/java/android/app/AppOpsManager.java
33f5ddd1bea21296938f2cba196f95d223aa247c 22-Jul-2014 Dianne Hackborn <hackbod@google.com> Add permissions associated with app ops.

Change-Id: I575ad7a3ceea59486ca601f69760b14f6269511d
/frameworks/base/core/java/android/app/AppOpsManager.java
7b41467704f941b11af6aace3e40993afc7f6c6f 18-Jul-2014 John Spurlock <jspurlock@google.com> Zen mode filtering should use new usage constants.

Refactor stream-based calls to usage-based calls.

Bug:15279516
Change-Id: I3f7757d8123c14670e2ad5f8e6aa4e9803efe7ec
/frameworks/base/core/java/android/app/AppOpsManager.java
c39d47a8e7c74bd539104b0efab898ef6fc43ddf 09-Jul-2014 Michael Wright <michaelwr@google.com> Add MediaProjection APIs.

The new MediaProjection infrastructure allows the system to hand out
tokens granting the ability to capture the screen's contents, audio,
etc. at a granular level. It's intended to be used both for screen
casting, via the cast APIs, as well as screen sharing via third party
applications.

The screen sharing case is implemented, but all of audio capturing
is still forthcoming.

Change-Id: I4b24669bed7083e11413c10ed8d6b025f5375316
/frameworks/base/core/java/android/app/AppOpsManager.java
9854d5764887351a703568192a2ce7227cae03b5 02-Jul-2014 Julia Reynolds <juliacr@google.com> Map location-based op codes to UserManager.DISALLOW_SHARE_LOCATION.

Bug: 15928422
Change-Id: I9c59599d3bd2026277dcb382c92d23deec950d40
/frameworks/base/core/java/android/app/AppOpsManager.java
1c7c319bb89b9988bfd12afc3e8d89449fd163fc 26-Jun-2014 Jason Monk <jmonk@google.com> User restriction for disallowing window creation

Block any types of windows that could by used by apps to create
views on top of a locked app. This can be used by device admins
in conjunction with lock task mode.

Added a way for system (and priv apps) to bypass user restrictions
for specified op codes.

Bug: 15279535
Change-Id: I2381530ef6226a5bb32a99bb4030baafb39bf564
/frameworks/base/core/java/android/app/AppOpsManager.java
22c921a910d236abf3a1705a02541a49fdaf3a14 28-May-2014 Emily Bernier <ember@google.com> Add an app ops code for microphone muting.

When OP_AUDIO_MICROPHONE (linked to the DISALLOW_UNMUTE_MICROPHONE user
restriction) is set, the system blocks calls to setMicrophoneMute.

Bug: 13585692

Change-Id: Ib32138bcc256cfbac4fe21a090d5ba34f5c641fc
/frameworks/base/core/java/android/app/AppOpsManager.java
45775c4f93ccac604dcd5b027c8201872bbd0d46 16-May-2014 Emily Bernier <ember@google.com> Connect user audio restrictions to app ops.

Setting DISALLOW_ADJUST_VOLUME sets the relevant app ops as well,
blocking calls in AudioService.

Change-Id: I256b294465fc2e8b93cb0389b21299eacf0efb95
/frameworks/base/core/java/android/app/AppOpsManager.java
62062996dd256df8b575b2ba1f0bf97109c4e0ba 06-May-2014 Jason Monk <jmonk@google.com> Notify AppOpsService of UserRestrictions and Owners

This makes the DevicePolicyManagerService and UserManagerService
push the DeviceOwner/ProfileOwners and user restrictions on boot
as well as on any change.

This also adds a list of restrictions that allow any op to connected with
a user restriction such that it will return MODE_IGNORED when the user
restriction is present (except for the device/profile owner).

Change-Id: Id8a9591d8f04fe5ecebd95750d9010afc0cd786c
/frameworks/base/core/java/android/app/AppOpsManager.java
e22b3b143240f0f18e3d6d3c06686ad3c23b131b 08-May-2014 Dianne Hackborn <hackbod@google.com> Usage stats!

Start reworking the usage stats service to be able
to have an API we can publish.

The basic information it keeps is still the same, though
that will be changing in the future. The one big addition
here is that we are also now collecting configuration usage
stats.

Also introduce the start of an access model for usage stats,
using app ops. There is an new app op that gives an application
access to usage stats even if it normally wouldn't have it,
disabled by default.

Change-Id: I6ead28e18a7f08eafd057d6ff37dd9cb216358f4
/frameworks/base/core/java/android/app/AppOpsManager.java
1af30c7ac480e5d335f267a3ac3b2e6c748ce240 10-Mar-2014 John Spurlock <jspurlock@google.com> Add stream-level suppression to vibrate/audio services.

- Add new audio restriction layer to app-ops. Restrictions add
additional constraints to audio operations at a stream-level.
Restrictions do not affect the persistable state, and are purely
additive: that is, they can only impose additional contstraints, not
enable something that has already been disabled. Restrictions
also support a whitelisted set of exempt package names.

- Add new audio stream-level checks to app-ops.

- Implement a provisional OP_PLAY_AUDIO suppression to three
java entry points MediaPlayer, AudioTrack, & SoundPool.

- Enhance vibrator api to take stream information as an optional
hint - the constants correspond to AudioManager stream types.
OP_VIBRATE now supports the stream-level restriction check.

- Simplify Vibrator subclasses by adding default implementations
for two .vibrate calls.

- Migrate NoMan's zen-mode control to use the new app-ops
stream-level restriction mechanism.

Change-Id: Ifae8952647202f728cf1c73e881452660c704678
/frameworks/base/core/java/android/app/AppOpsManager.java
75985bbe2f04519cc663db7ad54e8e69f3eabfc0 14-Mar-2014 John Spurlock <jspurlock@google.com> am 62826f55: am f6228d95: Merge "Fix doc typos in AppOpsManager.java" into klp-docs

* commit '62826f55be4415684b4e321469298ba43d598bbb':
Fix doc typos in AppOpsManager.java
925b85eae8ee605ef33bb8cca1018e474cef402a 10-Mar-2014 John Spurlock <jspurlock@google.com> Fix doc typos in AppOpsManager.java

Change-Id: I3c930a2afce48c57570681a95595149df5158053
/frameworks/base/core/java/android/app/AppOpsManager.java
fa06d03edf7b40f62615c58233dbdf135bac11df 08-Oct-2013 Nick Kralevich <nnk@google.com> am 0b8fd029: am a299862d: Merge "Fix App Ops permission mapping structure."

* commit '0b8fd029c052784d4adee940eaa904a339db6716':
Fix App Ops permission mapping structure.
0b8fd029c052784d4adee940eaa904a339db6716 08-Oct-2013 Nick Kralevich <nnk@google.com> am a299862d: Merge "Fix App Ops permission mapping structure."

* commit 'a299862dd2d46fda54678df07db66bef1a63bb9b':
Fix App Ops permission mapping structure.
f97616c7baf989919a44c04a4bf3852f1b32ce06 07-Oct-2013 Robert Craig <rpcraig@tycho.ncsc.mil> Fix App Ops permission mapping structure.

The entry to map the post notification op
to a permission is at the wrong offset
within the sOpPerms array. This patch
fixes the issue.

Change-Id: Ia241d274e484b6a24edbfb17b87bb887b61f1ee1
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
/frameworks/base/core/java/android/app/AppOpsManager.java
e4cb66fd77084b2642e519bb7f4c27ae7ef95939 02-Oct-2013 Dianne Hackborn <hackbod@google.com> Fix issue #11044267: AppOpsManager.startWatchingMode should take a String

Change-Id: I193a738f2e4ef147c22fb46cfa34ec14ad95d192
/frameworks/base/core/java/android/app/AppOpsManager.java
8828d3a153e28fe631edcd5145e6cc706e0b34c8 26-Sep-2013 Dianne Hackborn <hackbod@google.com> Fix issue #10919261: Don't clear OP_WRITE_SMS when resetting app prefs

Add a new array indicating whether each op allows itself to
be reset, and use it.

Change-Id: I494f630bda170e061196a380563512e9e77b51a8
/frameworks/base/core/java/android/app/AppOpsManager.java
9bb0ee9131b0fa8cf2720f200575ba2ede48a65c 22-Sep-2013 Dianne Hackborn <hackbod@google.com> Issue #10461551: KLP API Review: AppOpsManager

Changed public constants from integers to strings. Internally
everything is still integers, since we want that more efficient
representation for most things.

Changed the Callback interface to OnOpChangedListener. We also
have a private versin that again takes an int, and tricks to
make both work.

Reworked the class documentation to be appropriate to the SDK
(as much as it can be); most of the existing documentation is
moved to the private implementation. Also added documentation
of the MODE constants.

Change-Id: I4f7e73cc99fe66beff9194e960e072e2aa9458f8
/frameworks/base/core/java/android/app/AppOpsManager.java
f5d831915dd11e77cdcf5669228c55fe17a21c5e 16-Sep-2013 David Braun <dabraun@google.com> Implement new method for handling SMS/MMS on the platform

Multi project change:
The changes in this project add the new (hidden) default sms application
setting to Settings.Secure and updates AppOps to support the concept
of an op defaulting to something other than allowed. OP_WRITE_SMS is set
to default to MODE_IGNORED.

Bug: 10449618
Change-Id: I37619784ac70c27cf9fbcbfcac1b263398bc4e01
/frameworks/base/core/java/android/app/AppOpsManager.java
95d785346b4dae808a2d8f77356175e55a572d96 11-Sep-2013 Dianne Hackborn <hackbod@google.com> Fix issue #10688644: Java crash in com.android.phone:

java.lang.SecurityException: Operation not allowed

There was a situation I wasn't taking into account -- components
declared by the system has a special ability to run in the processes
of other uids. This means that if that code loaded into another
process tries to do anything needing an app op verification, it will
fail, because it will say it is calling as the system package name but
it is not actually coming from the system uid.

To fix this, we add a new Context.getOpPackageName() to go along-side
getBasePackageName(). This is a special call for use by all app ops
verification, which will be initialized with either the base package
name, the actual package name, or now the default package name of the
process if we are creating a context for system code being loaded into
a non-system process.

I had to update all of the code doing app ops checks to switch to this
method to get the calling package name.

Also improve the security exception throw to have a more descriptive
error message.

Change-Id: Ic04f77b3938585b02fccabbc12d2f0dc62b9ef25
/frameworks/base/core/java/android/app/AppOpsManager.java
b776122a8aa9fd082fa8aaa216c8a589d709c4c9 10-Sep-2013 David Braun <dabraun@google.com> Merge "Factor out read/write SMS settings seperate from send/receive." into klp-dev
18966a8dd8dfae553eaaafa87a656af3b7518fc6 10-Sep-2013 David Braun <dabraun@google.com> Factor out read/write SMS settings seperate from send/receive.

Change-Id: I161782b1508be433c910ec13c0b18e728bf7d2ba
/frameworks/base/core/java/android/app/AppOpsManager.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/core/java/android/app/AppOpsManager.java
0770f9ef66f6e0d8724c972fbdce81aae6de2ca1 03-Aug-2013 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of c8911ddd to master

Change-Id: I790b547268a23848577199256fc5abc9bdb7abb8
607b414d0444067e166fa54d8ea37563f2715ea3 03-Aug-2013 Dianne Hackborn <hackbod@google.com> Add new app ops method to reset all op modes.

Change-Id: I5ee6764de8dc31d812e5a788914ab0099bbef4c0
/frameworks/base/core/java/android/app/AppOpsManager.java
0b8374501975aecd7a628336e2f7e53c272ebeea 30-Jul-2013 David Christie <dnchrist@google.com> Add new app op to monitor high power location requests.

This is a new op parallel to the existing OP_MONITOR_LOCATION
but only tracks those requests deemed to be above a
power threshold.

Change-Id: I76fe4d9d2e550293b9da6d5cf902a5b4dd499f0f
/frameworks/base/core/java/android/app/AppOpsManager.java
e98f5dbe6b6f9f2cb6a73ee750faacda2596b34f 18-Jul-2013 Dianne Hackborn <hackbod@google.com> Make it safe to use start/stop app ops outside of system proc

We now keep track of all of the active start operations per
non-system process, so they can be cleaned up if the process
goes away.

Change-Id: I9d05f1e0281c47dbe1213de014f0491f1359685c
/frameworks/base/core/java/android/app/AppOpsManager.java
3e82ba1a67b0c756ab6a289985f4cfc53725b311 16-Jul-2013 Dianne Hackborn <hackbod@google.com> Make ArrayMap public! :)

Also do some tweaking of the various container classes
to synchronize them with the support lib and make it
easier to copy code between the two.

And update activity/fragment to use ArrayMap.

Change-Id: I3cfe82392a17119dfc72c3d9961f64e1914f42be
/frameworks/base/core/java/android/app/AppOpsManager.java
1304f4ae32cf7121fe11e95f2a7151ea208b6cca 10-Jul-2013 Dianne Hackborn <hackbod@google.com> Add new location monitoring op, make some of app ops public.

The new location monitoring op is to tell us when an application
is monitoring for any location changes. It may be useful information
in addition to the more explicitly information about when location
data actually goes to the app.

Also make parts of AppOpsManager public for use by gcore. It is
not available to third party apps.

Change-Id: Ib639f704258ffdd7f3acd7567350ed2539da628a
/frameworks/base/core/java/android/app/AppOpsManager.java
713df150b92a0a5eea877f99405e31eefbf93a09 17-May-2013 Dianne Hackborn <hackbod@google.com> Add app ops for wake locks.

Currently only supports auditing, not disabling.

Change-Id: Ie85f02c29b490d96e073f54d59e165d48c7c00c9
/frameworks/base/core/java/android/app/AppOpsManager.java
ba50b97cff80e73620a0e3d13cae169e095974a7 01-May-2013 Dianne Hackborn <hackbod@google.com> Add new app ops for various interesting audio service things.

Media buttons: note when an application tries to take ownership
of the media buttons.
Audio focus: note when an application tries to take audio focus.
Volume levels: note changes to the volume level of the various
streams.

Maybe we should also have some ops for muting streams, soloing
streams, etc?

Change-Id: I79a5d477b0bad4ff61486cdb73ffb1196a674964
/frameworks/base/core/java/android/app/AppOpsManager.java
efcc1a23a1f731390ef8506b3536b9562d18ed78 26-Feb-2013 Dianne Hackborn <hackbod@google.com> App ops: adding operations for reading/writing clipboard.

Change-Id: Ic4cade153618fe86954754a3b3edde64a52a0a9c
/frameworks/base/core/java/android/app/AppOpsManager.java
d7d28e675ea7aac151c0c302d233b476537af946 12-Feb-2013 Dianne Hackborn <hackbod@google.com> App ops: media ops, set up to be callable from native code.

This is to help implementation of bug #8181262 and maybe
bug #8181261

Adds some definition for media ops (though nothing is yet using
them), and re-arranges things a bit so we can implement native
calling in to the app ops service.

Also add some java docs.

Change-Id: I637959745db820e676f23a35a5d2224f51bc6689
/frameworks/base/core/java/android/app/AppOpsManager.java
fde19b106b2b77bc3540b04445357870caf878b5 17-Jan-2013 Daniel Sandler <dsandler@android.com> New API to request a list of current notifications.

The ACCESS_NOTIFICATIONS permission is signature|system only.

Change-Id: I41338230aee9611117cbdac251c1b6b6c3cebf00
/frameworks/base/core/java/android/app/AppOpsManager.java
c2293025a25e04b26bf53713d71f85fd9ca5e8e9 07-Feb-2013 Dianne Hackborn <hackbod@google.com> App ops: track system windows, monitoring changes.

Change-Id: I273e82bdad66ada3bf0f7ec9176bc304b9ee1ee8
/frameworks/base/core/java/android/app/AppOpsManager.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/core/java/android/app/AppOpsManager.java
f51f61269aacdfcf737b2c32b6b216c48ab61e65 05-Feb-2013 Dianne Hackborn <hackbod@google.com> App ops: new operations for SMS.

Implementation required a new framework feature
to associate an app op with a broadcast.

Change-Id: I4ff41a52f7ad4ee8fd80cbf7b394f04d6c4315b3
/frameworks/base/core/java/android/app/AppOpsManager.java
f265ea9d8307282ff1da3915978625a94fc2859e 01-Feb-2013 Dianne Hackborn <hackbod@google.com> App ops: vibration, neighboring cells, dialing, etc.

Improve handling of vibration op, so that apps are
better blamed (there is now a hidden vibrator API that
supplies the app to blame, and the system now uses this
when vibrating on behalf of an app).

Add operation for retrieving neighboring cell information.

Add a new op for calling a phone number. This required
plumbing information about the launching package name through
the activity manager, which required changing the internal
startActivity class, which required hitting a ton of code that
uses those internal APIs.

Change-Id: I3f8015634fdb296558f07fe654fb8d53e5c94d07
/frameworks/base/core/java/android/app/AppOpsManager.java
4a900acdef4559f9f84ca7e2bce45485215fc130 30-Jan-2013 Daniel Sandler <dsandler@android.com> Migrate package notification restrictions to AppOps.

Change-Id: I23064ce3014d2446d009bbdff92b301280e8b989
/frameworks/base/core/java/android/app/AppOpsManager.java
5e45ee6752528791deb66b83d76250685de15d47 25-Jan-2013 Dianne Hackborn <hackbod@google.com> App ops: you can now turn off operations.

Also add new ops for calendar and wi-fi scans, finish
implementing rejection of content provider calls, fix
issues with rejecting location calls, fix bug in the
new pm call to retrieve apps with permissions.

Change-Id: I29d9f8600bfbbf6561abf6d491907e2bbf6af417
/frameworks/base/core/java/android/app/AppOpsManager.java
72e3983d38f656cfa8c7a038eb80bdd9ea06768e 19-Jan-2013 Dianne Hackborn <hackbod@google.com> New API to get app op information about a single package.

Change-Id: I986453d9bb4161da467fb820b12502464e936483
/frameworks/base/core/java/android/app/AppOpsManager.java
d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaac 18-Jan-2013 Dianne Hackborn <hackbod@google.com> Rework ParceledListSlice to be much easier to use.

Take advantage of this to return better information about
packages filtered by permissions -- include the permissions
they have in the requested array.

Also fix issue #8026793 (Contact picture shows default pic
while searching for a contact in qsb) by using the base
package name of the Context when reporting the app name
of an operation. Otherwise you could make a resource-only
context for another application and do calls through that
and get reported as the wrong app.

Change-Id: I5e0488bf773acea5a3d22f245641828e1a106fb8
/frameworks/base/core/java/android/app/AppOpsManager.java
35654b61e8fe7bc85afcb076ddbb590d51c5865f 15-Jan-2013 Dianne Hackborn <hackbod@google.com> More work on App Ops service.

Implemented reading and writing state to retain information
across boots, API to retrieve state from it, improved location
manager interaction to monitor both coarse and fine access
and only note operations when location data is being delivered
back to app (not when it is just registering to get the data at
some time in the future).

Also implement tracking of read/write ops on contacts and the
call log. This involved tweaking the content provider protocol
to pass over the name of the calling package, and some
infrastructure in the ContentProvider transport to note incoming
calls with the app ops service. The contacts provider and call
log provider turn this on for themselves.

This also implements some of the mechanics of being able to ignore
incoming provider calls... all that is left are some new APIs for
the real content provider implementation to be involved with
providing the correct behavior for query() (return an empty
cursor with the right columns) and insert() (need to figure out
what URI to return).

Change-Id: I36ebbcd63dee58264a480f3d3786891ca7cbdb4c
/frameworks/base/core/java/android/app/AppOpsManager.java
a06de0f29b58df9246779cc4bfd8f06f7205ddb6 12-Dec-2012 Dianne Hackborn <hackbod@google.com> New "app ops" service.

Initial implementation, tracking use of the vibrator, GPS,
and location reports.

Also includes an update to battery stats to also keep track of
vibrator usage (since I had to be in the vibrator code anyway
to instrument it).

The service itself is only half-done. Currently no API to
retrieve the data (which once there will allow us to show you
which apps are currently causing the GPS to run and who has
recently accessed your location), it doesn't persist its data
like it should, and no way to tell it to reject app requests
for various operations.

But hey, it's a start!

Change-Id: I05b8d76cc4a4f7f37bc758c1701f51f9e0550e15
/frameworks/base/core/java/android/app/AppOpsManager.java