AppOpsManager.NoteOp Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Overloads
NoteOp(String, Int32, String) |
This member is deprecated. |
NoteOp(String, Int32, String, String, String) |
Make note of an application performing an operation and check if the application is allowed to perform it. |
NoteOp(String, Int32, String)
This member is deprecated.
[Android.Runtime.Register("noteOp", "(Ljava/lang/String;ILjava/lang/String;)I", "GetNoteOp_Ljava_lang_String_ILjava_lang_String_Handler")]
public virtual Android.App.AppOpsManagerMode NoteOp (string op, int uid, string packageName);
[<Android.Runtime.Register("noteOp", "(Ljava/lang/String;ILjava/lang/String;)I", "GetNoteOp_Ljava_lang_String_ILjava_lang_String_Handler")>]
abstract member NoteOp : string * int * string -> Android.App.AppOpsManagerMode
override this.NoteOp : string * int * string -> Android.App.AppOpsManagerMode
Parameters
- op
- String
The operation to note. One of the OPSTR_* constants.
- uid
- Int32
The user id of the application attempting to perform the operation.
- packageName
- String
The name of the application attempting to perform the operation.
Returns
- Attributes
Exceptions
If the app has been configured to crash on this op.
Remarks
This member is deprecated. Use #noteOp(String, int, String, String, String)
instead
Java documentation for android.app.AppOpsManager.noteOp(java.lang.String, int, java.lang.String)
.
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Applies to
NoteOp(String, Int32, String, String, String)
Make note of an application performing an operation and check if the application is allowed to perform it.
[Android.Runtime.Register("noteOp", "(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", "GetNoteOp_Ljava_lang_String_ILjava_lang_String_Ljava_lang_String_Ljava_lang_String_Handler", ApiSince=30)]
public virtual Android.App.AppOpsManagerMode NoteOp (string op, int uid, string? packageName, string? attributionTag, string? message);
[<Android.Runtime.Register("noteOp", "(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", "GetNoteOp_Ljava_lang_String_ILjava_lang_String_Ljava_lang_String_Ljava_lang_String_Handler", ApiSince=30)>]
abstract member NoteOp : string * int * string * string * string -> Android.App.AppOpsManagerMode
override this.NoteOp : string * int * string * string * string -> Android.App.AppOpsManagerMode
Parameters
- op
- String
The operation to note. One of the OPSTR_* constants.
- uid
- Int32
The uid of the application attempting to perform the operation.
- packageName
- String
The name of the application attempting to perform the operation.
- attributionTag
- String
The Context#createAttributionContext attribution tag
of the
calling context or null
for default attribution
- message
- String
A message describing why the op was noted
Returns
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).
- Attributes
Remarks
Make note of an application performing an operation and check if the application is allowed to perform it.
If this is a check that is not preceding the protected operation, use #unsafeCheckOp
instead.
The identity of the package the app-op is noted for is specified by the uid
and packageName
parameters. If this is noted for a regular app both should be set and the package needs to be part of the uid. In the very rare case that an app-op is noted for an entity that does not have a package name, the package can be null
. As it is possible that a single process contains more than one package the packageName
should be Context#getPackageName() read
from the context of the caller of the API (in the app process) that eventually triggers this check. If this op is not noted for a running process the packageName
cannot be read from the context, but it should be clear which package the note is for.
If the uid
and packageName
do not match this return #MODE_IGNORED
.
Beside the access check this method also records the access. While the access check is based on uid
and/or packageName
the access recording is done based on the packageName
and attributionTag
. The attributionTag
should be Context#getAttributionTag() read
from the same context the package name is read from. In the case the check is not related to an API call, the attributionTag
should be null
. Please note that e.g. registering a callback for later is still an API call and the code should store the attribution tag along the package name for being used in this method later.
The message
parameter only needs to be set when this method is <ul>not</ul> called in a two-way binder call from the client. In this case the message is a free form text that is meant help the app developer determine what part of the app's code triggered the note. This message is passed back to the app in the OnOpNotedCallback#onAsyncNoted(AsyncNotedAppOp)
callback. A good example of a useful message is including the System#identityHashCode(Object)
of the listener that will receive data or the name of the manifest-receiver.
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.