AppOpsManager 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
应用操作用于两个目的:访问控制和跟踪。
[Android.Runtime.Register("android/app/AppOpsManager", DoNotGenerateAcw=true)]
public class AppOpsManager : Java.Lang.Object
[<Android.Runtime.Register("android/app/AppOpsManager", DoNotGenerateAcw=true)>]
type AppOpsManager = class
inherit Object
- 继承
- 属性
注解
应用操作用于两个目的:访问控制和跟踪。
应用操作涵盖各种功能,包括帮助运行时权限访问控制和跟踪电池消耗跟踪。
<h2>访问控制</h2>
应用操作可以控制每个 uid 或每个包。 使用哪一个取决于维护此应用操作的 API 提供程序。 对于任何安全或隐私相关的应用操作,提供商需要控制每个 uid 的应用操作,因为所有安全和隐私都基于 Android 中的 uid。
若要控制应用操作的访问,可将应用操作设置为:<dl><dt><#MODE_DEFAULT
dd>默认行为,可能与 app-op 或 app-op <dt<>#MODE_ALLOWED
dd>允许访问 <dt#MODE_IGNORED
><dd>不允许访问,即不要执行请求的操作或返回否或占位符数据 <dt#MODE_ERRORED
<>dd>引发SecurityException
访问。 可以使用方法来检查模式 </dl 来取消...noThrow
此操作>
API 提供程序需要检查返回 #noteOp
的模式(如果允许访问受应用操作限制的操作)。 #unsafeCheckOp
如果未授予任何访问权限,则应用于检查模式。 例如,这可用于在 UI 中显示应用操作状态或在以后调用 #noteOp
之前检查状态时。
如果操作引用时间跨度(例如录音会话),API 提供程序应使用 #startOp
, #finishOp
而不是 #noteOp
。
<h3>运行时权限和 app-ops</h3>
每个平台定义的运行时权限(除了后台修饰符)都有一个关联的应用操作,用于跟踪,但也允许无提示故障。 例如,如果运行时权限被拒绝,则调用方会获取一个 SecurityException
,但如果授予权限并且应用操作是 #MODE_IGNORED
调用方获取占位符行为,例如位置回调不会发生。
<h3>应用操作权限</h3>
应用操作权限是可重写的平台定义权限。 应用操作权限的安全检查应通过 #MODE_DEFAULT default
检查权限授予状态。 如果应用操作状态设置为 #MODE_ALLOWED
或 #MODE_IGNORED
应检查应用操作状态,而不是权限授予状态。
此功能允许默认向满足特定权限级别的要求的应用授予访问权限。 仍可根据需要重写该行为。
<h2>跟踪</h2>
应用操作跟踪许多重要事件,包括对运行时权限保护 API 的所有访问。 这是通过跟踪应用操作#noteOp noted
#startOp started
或 。 跟踪的数据只能由系统组件读取。
<b>仅 #noteOp
/#startOp
跟踪; #unsafeCheckOp
未跟踪。 因此,最终调用 #noteOp
或 #startOp
提供对受保护操作或数据的访问权限非常重要。</b>
某些应用正在转发对其他应用的访问。 例如,应用可能会从系统的位置提供程序获取位置,然后将该位置进一步发送到第三个应用。 在这种情况下,传递数据的应用需要调用 #noteProxyOp
以发出访问代理信号。 如果在具有不同属性标记的标记的两个部分之间转发访问,则单个应用内部也可能有意义。
应用可以注册一个 OnOpNotedCallback
来了解系统正在跟踪哪些访问权限。 由于每个运行时权限都有关联的应用操作,因此此 API 对于想要查找意外的专用数据访问的应用特别有用。
适用于 . 的 android.app.AppOpsManager
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
AppOpsManager(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
字段
ModeAllowed |
已过时.
结果 |
ModeDefault |
已过时.
|
ModeErrored |
已过时.
|
ModeForeground |
已过时.
特殊模式,表示“仅当应用处于前台时才允许”。 |
ModeIgnored |
已过时.
|
OpstrAddVoicemail |
访问电话状态相关信息所必需的。 |
OpstrAnswerPhoneCalls |
接听来电 |
OpstrBodySensors |
访问人体传感器,例如心率等。 |
OpstrCallPhone |
允许应用程序发起电话呼叫。 |
OpstrCamera |
需要能够访问相机设备。 |
OpstrCoarseLocation |
访问粗略的位置信息。 |
OpstrFineLocation |
访问精细的位置信息。 |
OpstrGetUsageStats |
|
OpstrMockLocation |
将模拟位置注入系统。 |
OpstrMonitorHighPowerLocation |
使用相对较高的电源请求持续监视位置数据。 |
OpstrMonitorLocation |
持续监视位置数据。 |
OpstrPictureInPicture |
访问图片中的图片。 |
OpstrProcessOutgoingCalls |
用于转移传出调用的访问 API |
OpstrReadCalendar |
允许应用程序读取用户的日历数据。 |
OpstrReadCallLog |
允许应用程序读取用户的呼叫日志。 |
OpstrReadCellBroadcasts |
读取以前收到的单元格广播消息。 |
OpstrReadContacts |
允许应用程序读取用户的联系人数据。 |
OpstrReadExternalStorage |
读取外部存储。 |
OpstrReadPhoneNumbers |
应用操作用于两个目的:访问控制和跟踪。 |
OpstrReadPhoneState |
访问电话状态相关信息所必需的。 |
OpstrReadSms |
允许应用程序读取短信。 |
OpstrReceiveMms |
允许应用程序接收彩信。 |
OpstrReceiveSms |
允许应用程序接收短信。 |
OpstrReceiveWapPush |
允许应用程序接收 WAP 推送消息。 |
OpstrRecordAudio |
需要能够访问麦克风设备。 |
OpstrSendSms |
允许应用程序发送短信。 |
OpstrSystemAlertWindow |
需要在其他应用的基础上绘制。 |
OpstrUseFingerprint |
使用指纹 API。 |
OpstrUseSip |
通过 VOIP 或 WiFi 进行 SIP 呼叫的访问 API |
OpstrWriteCalendar |
允许应用程序写入用户的日历数据。 |
OpstrWriteCallLog |
允许应用程序写入用户的呼叫日志。 |
OpstrWriteContacts |
允许应用程序写入用户的联系人数据。 |
OpstrWriteExternalStorage |
写入外部存储。 |
OpstrWriteSettings |
写入/修改/更新系统设置所必需的。 |
WatchForegroundChanges |
已过时.
|
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
JniIdentityHashCode |
应用操作用于两个目的:访问控制和跟踪。 (继承自 Object) |
JniPeerMembers |
应用操作用于两个目的:访问控制和跟踪。 |
PeerReference |
应用操作用于两个目的:访问控制和跟踪。 (继承自 Object) |
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
方法
显式接口实现
IJavaPeerable.Disposed() |
应用操作用于两个目的:访问控制和跟踪。 (继承自 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
应用操作用于两个目的:访问控制和跟踪。 (继承自 Object) |
IJavaPeerable.Finalized() |
应用操作用于两个目的:访问控制和跟踪。 (继承自 Object) |
IJavaPeerable.JniManagedPeerState |
应用操作用于两个目的:访问控制和跟踪。 (继承自 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
应用操作用于两个目的:访问控制和跟踪。 (继承自 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
应用操作用于两个目的:访问控制和跟踪。 (继承自 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
应用操作用于两个目的:访问控制和跟踪。 (继承自 Object) |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
应用操作用于两个目的:访问控制和跟踪。 |
GetJniTypeName(IJavaPeerable) |
应用操作用于两个目的:访问控制和跟踪。 |