AppOpsManagerCompat

public final class AppOpsManagerCompat
extends Object

java.lang.Object
   ↳ androidx.core.app.AppOpsManagerCompat


Helper for accessing features in AppOpsManager.

Summary

Constants

int MODE_ALLOWED

Result from noteOp(Context, String, int, String): the given caller is allowed to perform the given operation.

int MODE_DEFAULT

Result from noteOp(Context, String, int, String): the given caller should use its default security check.

int MODE_ERRORED

Result from noteOpNoThrow(Context, String, int, String): the given caller is not allowed to perform the given operation, and this attempt should cause it to have a fatal error, typically a SecurityException.

int MODE_IGNORED

Result from noteOp(Context, String, int, String): the given caller is not allowed to perform the given operation, and this attempt should silently fail (it should not cause the app to crash).

Public methods

static int checkOrNoteProxyOp(Context context, int proxyUid, String op, String proxiedPackageName)

Check op for both proxy and proxied packages.

static int noteOp(Context context, String op, int uid, String packageName)

Make note of an application performing an operation.

static int noteOpNoThrow(Context context, String op, int uid, String packageName)

Like noteOp(Context, String, int, String) but instead of throwing a SecurityException it returns MODE_ERRORED.

static int noteProxyOp(Context context, String op, String proxiedPackageName)

Make note of an application performing an operation on behalf of another application when handling an IPC.

static int noteProxyOpNoThrow(Context context, String op, String proxiedPackageName)

Like noteProxyOp(Context, String, String) but instead of throwing a SecurityException it returns MODE_ERRORED.

static String permissionToOp(String permission)

Gets the app op name associated with a given permission.

Inherited methods

Constants

MODE_ALLOWED

public static final int MODE_ALLOWED

Result from noteOp(Context, String, int, String): the given caller is allowed to perform the given operation.

Constant Value: 0 (0x00000000)

MODE_DEFAULT

public static final int MODE_DEFAULT

Result from noteOp(Context, String, int, String): the given caller should use its default security check. This mode is not normally used; it should only be used with appop permissions, and callers must explicitly check for it and deal with it.

Constant Value: 3 (0x00000003)

MODE_ERRORED

public static final int MODE_ERRORED

Result from noteOpNoThrow(Context, String, int, String): the given caller is not allowed to perform the given operation, and this attempt should cause it to have a fatal error, typically a SecurityException.

Constant Value: 2 (0x00000002)

MODE_IGNORED

public static final int MODE_IGNORED

Result from noteOp(Context, String, int, String): the given caller is not allowed to perform the given operation, and this attempt should silently fail (it should not cause the app to crash).

Constant Value: 1 (0x00000001)

Public methods

checkOrNoteProxyOp

public static int checkOrNoteProxyOp (Context context, 
                int proxyUid, 
                String op, 
                String proxiedPackageName)

Check op for both proxy and proxied packages. Do a quick check for whether an application might be able to perform an operation. This is not a security check. On API 23-28, fallback to noteProxyOpNoThrow(Context, String, String) On API 22 and lower, this method always returns MODE_IGNOREDERROR(if it is not allowed and should be silently ignored (without causing the app to crash). /#MODE_IGNORED} if it is not allowed and should be silently ignored (without causing the app to crash).)

Parameters
context Context: Your context.

proxyUid int: The uid of the proxy application.

op String: The operation to note. One of the OPSTR_* constants.

proxiedPackageName String: The name of the application calling into the proxy application.

Returns
int Returns MODE_ALLOWED if the operation is allowed, or

noteOp

public static int noteOp (Context context, 
                String op, 
                int uid, 
                String packageName)

Make note of an application performing an operation. Note that you must pass in both the uid and name of the application to be checked; this function will verify that these two match, and if not, return MODE_IGNORED. If this call succeeds, the last execution time of the operation for this app will be updated to the current time.

Compatibility

  • On API 18 and lower, this method always returns MODE_IGNORED

Parameters
context Context: Your context.

op String: The operation to note. One of the OPSTR_* constants.

uid int: The user id of the application attempting to perform the operation.

packageName String: The name of the application attempting to perform the operation.

Returns
int Returns MODE_ALLOWED if the operation is allowed, or MODE_IGNORED if it is not allowed and should be silently ignored (without causing the app to crash).

Throws
SecurityException If the app has been configured to crash on this op.