Most visited

Recently visited

Added in API level 19

AppOpsManager

public class AppOpsManager
extends Object

java.lang.Object
   ↳ android.app.AppOpsManager


用于与“应用程序操作”跟踪交互的API。

此API通常不适用于第三方应用程序开发人员; 大多数功能仅适用于系统应用程序。 通过Context.getSystemServiceContext.APP_OPS_SERVICE获取它的一个实例。

Summary

Nested classes

interface AppOpsManager.OnOpChangedListener

回调操作状态更改的通知。

Constants

int MODE_ALLOWED

结果从 checkOp(String, int, String)noteOp(String, int, String)startOp(String, int, String) :给定呼叫者被允许执行给定的操作。

int MODE_DEFAULT

结果从 checkOp(String, int, String)noteOp(String, int, String)startOp(String, int, String) :给定的调用者应使用其默认的安全检查。

int MODE_ERRORED

结果从 checkOpNoThrow(String, int, String)noteOpNoThrow(String, int, String)startOpNoThrow(String, int, String) :给定的调用者不允许执行给定的操作,并且这样的尝试应该使得它有一个致命的错误,通常是 SecurityException

int MODE_IGNORED

结果从 checkOp(String, int, String)noteOp(String, int, String)startOp(String, int, String) :给定的调用者不允许执行给定的操作,并且这种尝试应该 失败默默 (它不应该导致应用程序崩溃)。

String OPSTR_ADD_VOICEMAIL

访问电话状态相关信息所需。

String OPSTR_BODY_SENSORS

访问身体传感器,如心率等

String OPSTR_CALL_PHONE

允许应用程式发起电话通话。

String OPSTR_CAMERA

要求能够访问摄像机设备。

String OPSTR_COARSE_LOCATION

获取粗略的位置信息。

String OPSTR_FINE_LOCATION

获得优良的位置信息。

String OPSTR_GET_USAGE_STATS

访问 UsageStatsManager

String OPSTR_MOCK_LOCATION

将模拟位置注入系统。

String OPSTR_MONITOR_HIGH_POWER_LOCATION

用相对较高的功率请求连续监测位置数据。

String OPSTR_MONITOR_LOCATION

不断监测位置数据。

String OPSTR_READ_CALENDAR

允许应用程序读取用户的日历数据。

String OPSTR_READ_CALL_LOG

允许应用程式读取使用者的通话记录。

String OPSTR_READ_CELL_BROADCASTS

阅读以前收到的小区广播消息。

String OPSTR_READ_CONTACTS

允许应用程序读取用户的联系人数据。

String OPSTR_READ_EXTERNAL_STORAGE

阅读外部存储。

String OPSTR_READ_PHONE_STATE

访问电话状态相关信息所需。

String OPSTR_READ_SMS

允许应用程式读取短讯。

String OPSTR_RECEIVE_MMS

允许应用程式接收彩信。

String OPSTR_RECEIVE_SMS

允许应用程式接收短讯。

String OPSTR_RECEIVE_WAP_PUSH

允许应用程序接收WAP推送消息。

String OPSTR_RECORD_AUDIO

需要能够访问麦克风设备。

String OPSTR_SEND_SMS

允许应用程式发送短讯。

String OPSTR_SYSTEM_ALERT_WINDOW

需要绘制其他应用程序的顶部。

String OPSTR_USE_FINGERPRINT

使用指纹API。

String OPSTR_USE_SIP

通过VOIP或WiFi访问用于SIP呼叫的API

String OPSTR_WRITE_CALENDAR

允许应用程序写入用户的日历数据。

String OPSTR_WRITE_CALL_LOG

允许应用程序写入用户的通话记录。

String OPSTR_WRITE_CONTACTS

允许应用程序写入用户的联系人数据。

String OPSTR_WRITE_EXTERNAL_STORAGE

写入外部存储。

String OPSTR_WRITE_SETTINGS

需要编写/修改/更新系统设置。

Public methods

int checkOp(String op, int uid, String packageName)

快速检查应用程序是否可以执行操作。

int checkOpNoThrow(String op, int uid, String packageName)

checkOp(String, int, String)一样,但不是投掷 SecurityException而是返回 MODE_ERRORED

void checkPackage(int uid, String packageName)

快速检查以确认包名是否属于UID。

void finishOp(String op, int uid, String packageName)

报告应用程序不再执行之前已使用 startOp(String, int, String)开始的 startOp(String, int, String)

int noteOp(String op, int uid, String packageName)

记下执行操作的应用程序。

int noteOpNoThrow(String op, int uid, String packageName)

noteOp(String, int, String)一样,但不是抛出 SecurityException而是返回 MODE_ERRORED

int noteProxyOp(String op, String proxiedPackageName)

记下一个应用程序在处理IPC时代表另一个应用程序执行操作。

int noteProxyOpNoThrow(String op, String proxiedPackageName)

noteProxyOp(String, String)一样,但不是抛出 SecurityException而是返回 MODE_ERRORED

static String permissionToOp(String permission)

获取与给定权限关联的应用op名称。

int startOp(String op, int uid, String packageName)

报告应用程序已开始执行长时间运行的操作。

int startOpNoThrow(String op, int uid, String packageName)

startOp(String, int, String)一样,但不是投掷 SecurityException而是返回 MODE_ERRORED

void startWatchingMode(String op, String packageName, AppOpsManager.OnOpChangedListener callback)

监视给定应用程序包中给定操作的操作模式更改。

void stopWatchingMode(AppOpsManager.OnOpChangedListener callback)

停止监控,此前 startWatchingMode(String, String, AppOpsManager.OnOpChangedListener)开始。

Inherited methods

From class java.lang.Object

Constants

MODE_ALLOWED

Added in API level 19
int MODE_ALLOWED

结果从 checkOp(String, int, String)noteOp(String, int, String)startOp(String, int, String) :给定呼叫者被允许执行给定的操作。

常量值:0(0x00000000)

MODE_DEFAULT

Added in API level 21
int MODE_DEFAULT

结果从checkOp(String, int, String)noteOp(String, int, String)startOp(String, int, String) :给定的调用者应使用其默认的安全检查。 这种模式通常不被使用; 它只能与appop权限一起使用,调用者必须明确检查并处理它。

常量值:3(0x00000003)

MODE_ERRORED

Added in API level 19
int MODE_ERRORED

结果从 checkOpNoThrow(String, int, String)noteOpNoThrow(String, int, String)startOpNoThrow(String, int, String) :给定的调用者不允许执行给定的操作,并且这样的尝试应该使得它有一个致命的错误,通常是 SecurityException

常量值:2(0x00000002)

MODE_IGNORED

Added in API level 19
int MODE_IGNORED

结果从 checkOp(String, int, String)noteOp(String, int, String)startOp(String, int, String) :给定的调用者不允许执行给定的操作,并且这种尝试应该 失败默默 (它不应该导致应用程序崩溃)。

常数值:1(0x00000001)

OPSTR_ADD_VOICEMAIL

Added in API level 23
String OPSTR_ADD_VOICEMAIL

访问电话状态相关信息所需。

常量值:“android:add_voicemail”

OPSTR_BODY_SENSORS

Added in API level 23
String OPSTR_BODY_SENSORS

访问身体传感器,如心率等

常量值:“android:body_sensors”

OPSTR_CALL_PHONE

Added in API level 23
String OPSTR_CALL_PHONE

允许应用程式发起电话通话。

常量值:“android:call_phone”

OPSTR_CAMERA

Added in API level 23
String OPSTR_CAMERA

要求能够访问摄像机设备。

常数值:“android:camera”

OPSTR_COARSE_LOCATION

Added in API level 19
String OPSTR_COARSE_LOCATION

获取粗略的位置信息。

常量值:“android:coarse_location”

OPSTR_FINE_LOCATION

Added in API level 19
String OPSTR_FINE_LOCATION

获得优良的位置信息。

常量值:“android:fine_location”

OPSTR_GET_USAGE_STATS

Added in API level 21
String OPSTR_GET_USAGE_STATS

访问 UsageStatsManager

常量值:“android:get_usage_stats”

OPSTR_MOCK_LOCATION

Added in API level 23
String OPSTR_MOCK_LOCATION

将模拟位置注入系统。

常量值:“android:mock_location”

OPSTR_MONITOR_HIGH_POWER_LOCATION

Added in API level 19
String OPSTR_MONITOR_HIGH_POWER_LOCATION

用相对较高的功率请求连续监测位置数据。

常量值:“android:monitor_location_high_power”

OPSTR_MONITOR_LOCATION

Added in API level 19
String OPSTR_MONITOR_LOCATION

不断监测位置数据。

常量值:“android:monitor_location”

OPSTR_READ_CALENDAR

Added in API level 23
String OPSTR_READ_CALENDAR

允许应用程序读取用户的日历数据。

常量值:“android:read_calendar”

OPSTR_READ_CALL_LOG

Added in API level 23
String OPSTR_READ_CALL_LOG

允许应用程式读取使用者的通话记录。

常量值:“android:read_call_log”

OPSTR_READ_CELL_BROADCASTS

Added in API level 23
String OPSTR_READ_CELL_BROADCASTS

阅读以前收到的小区广播消息。

常量值:“android:read_cell_broadcasts”

OPSTR_READ_CONTACTS

Added in API level 23
String OPSTR_READ_CONTACTS

允许应用程序读取用户的联系人数据。

常量值:“android:read_contacts”

OPSTR_READ_EXTERNAL_STORAGE

Added in API level 23
String OPSTR_READ_EXTERNAL_STORAGE

阅读外部存储。

常量值:“android:read_external_storage”

OPSTR_READ_PHONE_STATE

Added in API level 23
String OPSTR_READ_PHONE_STATE

访问电话状态相关信息所需。

常量值:“android:read_phone_state”

OPSTR_READ_SMS

Added in API level 23
String OPSTR_READ_SMS

允许应用程式读取短讯。

常量值:“android:read_sms”

OPSTR_RECEIVE_MMS

Added in API level 23
String OPSTR_RECEIVE_MMS

允许应用程式接收彩信。

常量值:“android:receive_mms”

OPSTR_RECEIVE_SMS

Added in API level 23
String OPSTR_RECEIVE_SMS

允许应用程式接收短讯。

常量值:“android:receive_sms”

OPSTR_RECEIVE_WAP_PUSH

Added in API level 23
String OPSTR_RECEIVE_WAP_PUSH

允许应用程序接收WAP推送消息。

常量值:“android:receive_wap_push”

OPSTR_RECORD_AUDIO

Added in API level 23
String OPSTR_RECORD_AUDIO

需要能够访问麦克风设备。

常量值:“android:record_audio”

OPSTR_SEND_SMS

Added in API level 23
String OPSTR_SEND_SMS

允许应用程式发送短讯。

常量值:“android:send_sms”

OPSTR_SYSTEM_ALERT_WINDOW

Added in API level 23
String OPSTR_SYSTEM_ALERT_WINDOW

需要绘制其他应用程序的顶部。

常量值:“android:system_alert_window”

OPSTR_USE_FINGERPRINT

Added in API level 23
String OPSTR_USE_FINGERPRINT

使用指纹API。

常量值:“android:use_fingerprint”

OPSTR_USE_SIP

Added in API level 23
String OPSTR_USE_SIP

通过VOIP或WiFi访问用于SIP呼叫的API

常量值:“android:use_sip”

OPSTR_WRITE_CALENDAR

Added in API level 23
String OPSTR_WRITE_CALENDAR

允许应用程序写入用户的日历数据。

常量值:“android:write_calendar”

OPSTR_WRITE_CALL_LOG

Added in API level 23
String OPSTR_WRITE_CALL_LOG

允许应用程序写入用户的通话记录。

常量值:“android:write_call_log”

OPSTR_WRITE_CONTACTS

Added in API level 23
String OPSTR_WRITE_CONTACTS

允许应用程序写入用户的联系人数据。

常量值:“android:write_contacts”

OPSTR_WRITE_EXTERNAL_STORAGE

Added in API level 23
String OPSTR_WRITE_EXTERNAL_STORAGE

写入外部存储。

常量值:“android:write_external_storage”

OPSTR_WRITE_SETTINGS

Added in API level 23
String OPSTR_WRITE_SETTINGS

需要编写/修改/更新系统设置。

常量值:“android:write_settings”

Public methods

checkOp

Added in API level 19
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.

checkOpNoThrow

Added in API level 19
int checkOpNoThrow (String op, 
                int uid, 
                String packageName)

checkOp(String, int, String)一样,但不是抛出 SecurityException而是返回 MODE_ERRORED

Parameters
op String
uid int
packageName String
Returns
int

checkPackage

Added in API level 19
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.

finishOp

Added in API level 19
void finishOp (String op, 
                int uid, 
                String packageName)

报告应用程序不再执行以前已使用startOp(String, int, String)开始的startOp(String, int, String) 没有输入或结果的验证; 此处提供的参数必须与开始操作时先前传递的参数完全相同。

Parameters
op String
uid int
packageName String

noteOp

Added in API level 19
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.

noteOpNoThrow

Added in API level 19
int noteOpNoThrow (String op, 
                int uid, 
                String packageName)

noteOp(String, int, String)一样,但不是投掷 SecurityException而是返回 MODE_ERRORED

Parameters
op String
uid int
packageName String
Returns
int

noteProxyOp

Added in API level 23
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.

noteProxyOpNoThrow

Added in API level 23
int noteProxyOpNoThrow (String op, 
                String proxiedPackageName)

noteProxyOp(String, String)一样,但不是投掷 SecurityException而是返回 MODE_ERRORED

Parameters
op String
proxiedPackageName String
Returns
int

permissionToOp

Added in API level 23
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.

startOp

Added in API level 19
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.

startOpNoThrow

Added in API level 19
int startOpNoThrow (String op, 
                int uid, 
                String packageName)

startOp(String, int, String)一样,但不是投掷 SecurityException而是返回 MODE_ERRORED

Parameters
op String
uid int
packageName String
Returns
int

startWatchingMode

Added in API level 19
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.

stopWatchingMode

Added in API level 19
void stopWatchingMode (AppOpsManager.OnOpChangedListener callback)

停止监控,此前startWatchingMode(String, String, AppOpsManager.OnOpChangedListener)开始。 与此回调相关的所有监控都将被删除。

Parameters
callback AppOpsManager.OnOpChangedListener

Hooray!