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_DEFAULTdd>默认行为,可能与 app-op 或 app-op <dt<>#MODE_ALLOWEDdd>允许访问 <dt#MODE_IGNORED><dd>不允许访问,即不要执行请求的操作或返回 no 或占位符数据 <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 对于想要查找意外的专用数据访问的应用特别有用。
Java文档android.app.AppOpsManager。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
构造函数
| 名称 | 说明 |
|---|---|
| AppOpsManager(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
字段
| 名称 | 说明 |
|---|---|
| ModeAllowed |
已过时.
结果 |
| ModeDefault |
已过时.
|
| ModeErrored |
已过时.
|
| ModeForeground |
已过时.
特殊模式,表示“仅当应用处于前台时才允许”。 |
| ModeIgnored |
已过时.
|
| OpNotedCallbackFlagIgnoreAsync |
已过时.
忽略异步操作记下的事件。 |
| 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) |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
应用操作用于两个目的:访问控制和跟踪。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |