public class AppOpsManager
extends Object
java.lang.Object | |
↳ | android.app.AppOpsManager |
用于与“应用程序操作”跟踪交互的API。
此API通常不适用于第三方应用程序开发人员; 大多数功能仅适用于系统应用程序。 通过Context.getSystemService
与Context.APP_OPS_SERVICE
获取它的一个实例。
Nested classes |
|
---|---|
interface |
AppOpsManager.OnOpChangedListener 回调操作状态更改的通知。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
int MODE_ALLOWED
结果从 checkOp(String, int, String)
, noteOp(String, int, String)
, startOp(String, int, String)
:给定呼叫者被允许执行给定的操作。
常量值:0(0x00000000)
int MODE_DEFAULT
结果从checkOp(String, int, String)
, noteOp(String, int, String)
, startOp(String, int, String)
:给定的调用者应使用其默认的安全检查。 这种模式通常不被使用; 它只能与appop权限一起使用,调用者必须明确检查并处理它。
常量值:3(0x00000003)
int MODE_ERRORED
结果从 checkOpNoThrow(String, int, String)
, noteOpNoThrow(String, int, String)
, startOpNoThrow(String, int, String)
:给定的调用者不允许执行给定的操作,并且这样的尝试应该使得它有一个致命的错误,通常是 SecurityException
。
常量值:2(0x00000002)
int MODE_IGNORED
结果从 checkOp(String, int, String)
, noteOp(String, int, String)
, startOp(String, int, String)
:给定的调用者不允许执行给定的操作,并且这种尝试应该 失败默默 (它不应该导致应用程序崩溃)。
常数值:1(0x00000001)
String OPSTR_ADD_VOICEMAIL
访问电话状态相关信息所需。
常量值:“android:add_voicemail”
String OPSTR_BODY_SENSORS
访问身体传感器,如心率等
常量值:“android:body_sensors”
String OPSTR_CALL_PHONE
允许应用程式发起电话通话。
常量值:“android:call_phone”
String OPSTR_COARSE_LOCATION
获取粗略的位置信息。
常量值:“android:coarse_location”
String OPSTR_FINE_LOCATION
获得优良的位置信息。
常量值:“android:fine_location”
String OPSTR_GET_USAGE_STATS
访问 UsageStatsManager
。
常量值:“android:get_usage_stats”
String OPSTR_MOCK_LOCATION
将模拟位置注入系统。
常量值:“android:mock_location”
String OPSTR_MONITOR_HIGH_POWER_LOCATION
用相对较高的功率请求连续监测位置数据。
常量值:“android:monitor_location_high_power”
String OPSTR_MONITOR_LOCATION
不断监测位置数据。
常量值:“android:monitor_location”
String OPSTR_READ_CALENDAR
允许应用程序读取用户的日历数据。
常量值:“android:read_calendar”
String OPSTR_READ_CALL_LOG
允许应用程式读取使用者的通话记录。
常量值:“android:read_call_log”
String OPSTR_READ_CELL_BROADCASTS
阅读以前收到的小区广播消息。
常量值:“android:read_cell_broadcasts”
String OPSTR_READ_CONTACTS
允许应用程序读取用户的联系人数据。
常量值:“android:read_contacts”
String OPSTR_READ_EXTERNAL_STORAGE
阅读外部存储。
常量值:“android:read_external_storage”
String OPSTR_READ_PHONE_STATE
访问电话状态相关信息所需。
常量值:“android:read_phone_state”
String OPSTR_RECEIVE_MMS
允许应用程式接收彩信。
常量值:“android:receive_mms”
String OPSTR_RECEIVE_SMS
允许应用程式接收短讯。
常量值:“android:receive_sms”
String OPSTR_RECEIVE_WAP_PUSH
允许应用程序接收WAP推送消息。
常量值:“android:receive_wap_push”
String OPSTR_RECORD_AUDIO
需要能够访问麦克风设备。
常量值:“android:record_audio”
String OPSTR_SYSTEM_ALERT_WINDOW
需要绘制其他应用程序的顶部。
常量值:“android:system_alert_window”
String OPSTR_USE_FINGERPRINT
使用指纹API。
常量值:“android:use_fingerprint”
String OPSTR_USE_SIP
通过VOIP或WiFi访问用于SIP呼叫的API
常量值:“android:use_sip”
String OPSTR_WRITE_CALENDAR
允许应用程序写入用户的日历数据。
常量值:“android:write_calendar”
String OPSTR_WRITE_CALL_LOG
允许应用程序写入用户的通话记录。
常量值:“android:write_call_log”
String OPSTR_WRITE_CONTACTS
允许应用程序写入用户的联系人数据。
常量值:“android:write_contacts”
String OPSTR_WRITE_EXTERNAL_STORAGE
写入外部存储。
常量值:“android:write_external_storage”
String OPSTR_WRITE_SETTINGS
需要编写/修改/更新系统设置。
常量值:“android:write_settings”
int checkOp (String op, int uid, String packageName)
快速检查应用程序是否可以执行操作。 这不是安全检查; 您必须使用noteOp(String, int, String)
或startOp(String, int, String)
进行实际安全检查,这也可确保给定的uid和包名称一致。 此功能可用于快速检查应用程序是否已禁用某个操作,作为早期拒绝某些工作。 这不会修改有关操作的时间戳或其他数据。
Parameters | |
---|---|
op |
String : The operation to check. 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. |
int checkOpNoThrow (String op, int uid, String packageName)
像 checkOp(String, int, String)
一样,但不是抛出 SecurityException
而是返回 MODE_ERRORED
。
Parameters | |
---|---|
op |
String
|
uid |
int
|
packageName |
String
|
Returns | |
---|---|
int |
void checkPackage (int uid, String packageName)
快速检查以确认包名是否属于UID。
Parameters | |
---|---|
uid |
int
|
packageName |
String
|
Throws | |
---|---|
SecurityException |
if the package name doesn't belong to the given UID, or if ownership cannot be verified. |
void finishOp (String op, int uid, String packageName)
报告应用程序不再执行以前已使用startOp(String, int, String)
开始的startOp(String, int, String)
。 没有输入或结果的验证; 此处提供的参数必须与开始操作时先前传递的参数完全相同。
Parameters | |
---|---|
op |
String
|
uid |
int
|
packageName |
String
|
int noteOp (String op, int uid, String packageName)
记下执行操作的应用程序。 请注意,您必须同时传入要检查的应用程序的uid和名称; 这个函数将验证这两个匹配,如果不匹配,则返回MODE_IGNORED
。 如果此调用成功,则此应用程序的最后执行时间将更新为当前时间。
Parameters | |
---|---|
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. |
int noteOpNoThrow (String op, int uid, String packageName)
与 noteOp(String, int, String)
一样,但不是投掷 SecurityException
而是返回 MODE_ERRORED
。
Parameters | |
---|---|
op |
String
|
uid |
int
|
packageName |
String
|
Returns | |
---|---|
int |
int noteProxyOp (String op, String proxiedPackageName)
记下一个应用程序在处理IPC时代表另一个应用程序执行操作。 请注意,您必须传递正在进行代理的应用程序的程序包名称,同时将从IPC状态中推断其UID; 此函数将验证呼叫的uid和代理包名称是否匹配,如果不匹配,则返回MODE_IGNORED
。 如果此调用成功,则代理应用程序和您的应用程序的最后执行时间将更新为当前时间。
Parameters | |
---|---|
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 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. |
int noteProxyOpNoThrow (String op, String proxiedPackageName)
像 noteProxyOp(String, String)
一样,但不是投掷 SecurityException
而是返回 MODE_ERRORED
。
Parameters | |
---|---|
op |
String
|
proxiedPackageName |
String
|
Returns | |
---|---|
int |
String permissionToOp (String permission)
获取与给定权限关联的应用op名称。 应用程序的操作名称是此类中定义的公共常量之一,例如OPSTR_COARSE_LOCATION
。 此API旨在用于将运行时权限映射到相应的应用程序操作系统。
Parameters | |
---|---|
permission |
String : The permission. |
Returns | |
---|---|
String |
The app op associated with the permission or null. |
int startOp (String op, int uid, String packageName)
报告应用程序已开始执行长时间运行的操作。 请注意,您必须同时传入要检查的应用程序的uid和名称; 此功能将验证这两个匹配,如果不匹配,则返回MODE_IGNORED
。 如果此调用成功,则此应用程序的最后执行时间将更新为当前时间,并且该操作将被标记为“正在运行”。 在这种情况下,您必须稍后调用finishOp(String, int, String)
来报告应用程序何时不再执行操作。
Parameters | |
---|---|
op |
String : The operation to start. 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. |
int startOpNoThrow (String op, int uid, String packageName)
像 startOp(String, int, String)
一样,但不是投掷 SecurityException
而是返回 MODE_ERRORED
。
Parameters | |
---|---|
op |
String
|
uid |
int
|
packageName |
String
|
Returns | |
---|---|
int |
void startWatchingMode (String op, String packageName, AppOpsManager.OnOpChangedListener callback)
监视给定应用程序包中给定操作的操作模式更改。
Parameters | |
---|---|
op |
String : The operation to monitor, one of OPSTR_*. |
packageName |
String : The name of the application to monitor. |
callback |
AppOpsManager.OnOpChangedListener : Where to report changes. |
void stopWatchingMode (AppOpsManager.OnOpChangedListener callback)
停止监控,此前startWatchingMode(String, String, AppOpsManager.OnOpChangedListener)
开始。 与此回调相关的所有监控都将被删除。
Parameters | |
---|---|
callback |
AppOpsManager.OnOpChangedListener
|