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
- 상속
- 특성
설명
앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다.
App-ops는 런타임 권한 액세스 제어 및 추적에서 배터리 사용량 추적에 이르기까지 다양한 기능을 다룹니다.
<h2>액세스 제어</h2>
앱 작업은 각 uid 또는 각 패키지에 대해 제어할 수 있습니다. 사용되는 것은 이 앱 작업을 유지 관리하는 API 공급자에 따라 달라집니다. 모든 보안 또는 개인 정보 보호 관련 앱 작업을 위해 공급자는 모든 보안 및 개인 정보 보호가 Android의 uid를 기반으로 하므로 uid당 앱 작업을 제어해야 합니다.
app-op 액세스를 제어하려면 모드로 설정할 수 있습니다. <dl><dt#MODE_DEFAULT
><dd>기본 동작, app-op 또는 app-op <dt<>#MODE_ALLOWED
dd>와 다를 수 있습니다. 액세스 <dt#MODE_IGNORED
><dd>가 액세스를 허용하지 않도록 허용합니다. 즉, 요청된 작업을 수행하거나 액세스 시 dt dd throw를 반환하지 않거나 자리 표시자 데이터 <dt><#MODE_ERRORED
dd>를 SecurityException
반환하지 않습니다. 메서드를 사용하여 /dl 모드<를 ...noThrow
확인하여 이를 표시하지 않을 수 있습니다.>
API 공급자는 앱 작업에 의해 #noteOp
제어되는 작업에 대한 액세스를 허용하는 경우 반환된 모드를 확인해야 합니다. #unsafeCheckOp
는 액세스 권한이 없는 경우 모드를 확인하는 데 사용해야 합니다. 예를 들어 UI에서 앱 작업 상태를 표시하거나 나중에 호출 #noteOp
하기 전에 상태를 확인할 때 사용할 수 있습니다.
작업이 시간 범위(예: 오디오 녹음 세션)를 참조하는 경우 API 공급자는 대신 사용해야 #startOp
#finishOp
#noteOp
합니다.
<h3>런타임 권한 및 app-ops</h3>
각 플랫폼 정의 런타임 권한(백그라운드 한정자 외)에는 추적에 사용되지만 자동 오류를 허용하는 데 사용되는 연결된 앱 작업이 있습니다. 즉, 런타임 권한이 거부된 경우 호출자가 권한을 SecurityException
가져오지만 권한이 부여되고 app-op이 #MODE_IGNORED
면 호출자가 자리 표시자 동작을 가져옵니다(예: 위치 콜백이 발생하지 않음).
<h3>App-op permissions</h3>
앱 작업 권한은 재정의할 수 있는 플랫폼 정의 권한입니다. 앱 작업 권한에 대한 보안 검사는 권한 부여 상태를 확인해야 합니다 #MODE_DEFAULT default
. 앱 작업 상태가 설정 #MODE_ALLOWED
되거나 #MODE_IGNORED
권한 부여 상태 대신 앱 작업 상태를 확인해야 하는 경우
이 기능을 사용하면 특정 권한 수준에 대한 요구 사항을 충족하는 앱에 기본적으로 액세스 권한을 부여할 수 있습니다. 그래도 필요한 경우 동작을 재정의할 수 있습니다.
<h2>추적</h2>
App-ops는 런타임 권한 보호 API에 대한 모든 액세스를 포함하여 많은 중요한 이벤트를 추적합니다. 이 작업은 app-op이 있는 경우 또는 #startOp started
.을 추적하여 수행됩니다#noteOp noted
. 추적된 데이터는 시스템 구성 요소에서만 읽을 수 있습니다.
<b>추적만#startOp
#noteOp
/#unsafeCheckOp
하며 추적되지 않습니다. 따라서 최종적으로 호출 #noteOp
하거나 보호된 작업 또는 #startOp
데이터에 대한 액세스를 제공하는 것이 중요합니다.</b>
일부 앱은 다른 앱에 대한 액세스를 전달하고 있습니다. 예를 들어 앱은 시스템의 위치 공급자로부터 위치를 얻은 다음 해당 위치를 세 번째 앱으로 더 보낼 수 있습니다. 이 경우 데이터를 전달하는 앱은 액세스 프록시를 알리기 위해 호출 #noteProxyOp
해야 합니다. 다른 특성 태그를 사용하여 태그가 지정된 두 부분 간에 액세스가 전달되는 경우에도 단일 앱 내에서 의미가 있을 수 있습니다.
앱은 등록하여 시스템에서 추적하는 액세스에 대한 정보를 얻을 수 OnOpNotedCallback
있습니다. 각 런타임 권한에 연결된 app-op이 있으므로 이 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 |
애플리케이션에서 SMS 메시지를 읽을 수 있습니다. |
OpstrReceiveMms |
애플리케이션이 MMS 메시지를 받을 수 있도록 허용합니다. |
OpstrReceiveSms |
애플리케이션에서 SMS 메시지를 받을 수 있습니다. |
OpstrReceiveWapPush |
애플리케이션이 WAP 푸시 메시지를 받을 수 있도록 허용합니다. |
OpstrRecordAudio |
마이크 디바이스에 액세스할 수 있어야 합니다. |
OpstrSendSms |
애플리케이션에서 SMS 메시지를 보낼 수 있습니다. |
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는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. |
ThresholdType |
이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. |
메서드
CheckOp(String, Int32, String) |
이 멤버는 더 이상 사용되지 않습니다. |
CheckOpNoThrow(String, Int32, String) |
이 멤버는 더 이상 사용되지 않습니다. |
CheckPackage(Int32, String) |
이 멤버는 더 이상 사용되지 않습니다. |
Clone() |
이 개체의 복사본을 만들고 반환합니다. (다음에서 상속됨 Object) |
Dispose() |
앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다. (다음에서 상속됨 Object) |
Dispose(Boolean) |
앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다. (다음에서 상속됨 Object) |
Equals(Object) |
다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다. (다음에서 상속됨 Object) |
FinishOp(String, Int32, String, String) |
애플리케이션이 이전에 시작된 작업을 더 이상 수행하지 않는다고 보고합니다 |
FinishOp(String, Int32, String) |
이 멤버는 더 이상 사용되지 않습니다. |
FinishProxyOp(String, Int32, String, String) |
애플리케이션이 이전에 시작된 작업을 더 이상 수행하지 않는다고 보고합니다 |
GetHashCode() |
개체에 대한 해시 코드 값을 반환합니다. (다음에서 상속됨 Object) |
IsOpActive(String, Int32, String) |
패키지에 대해 지정된 작업이 활성 상태인지 여부를 확인합니다. |
JavaFinalize() |
가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다. (다음에서 상속됨 Object) |
NoteOp(String, Int32, String, String, String) |
작업을 수행하는 애플리케이션을 기록하고 애플리케이션이 작업을 수행할 수 있는지 확인합니다. |
NoteOp(String, Int32, String) |
이 멤버는 더 이상 사용되지 않습니다. |
NoteOpNoThrow(String, Int32, String, String, String) |
을 |
NoteOpNoThrow(String, Int32, String) |
이 멤버는 더 이상 사용되지 않습니다. |
NoteProxyOp(String, String, Int32, String, String) |
IPC를 처리할 때 다른 애플리케이션을 대신하여 작업을 수행하는 애플리케이션을 기록해 둡다. |
NoteProxyOp(String, String) |
이 멤버는 더 이상 사용되지 않습니다. |
NoteProxyOpNoThrow(String, String, Int32, String, String) |
을 |
NoteProxyOpNoThrow(String, String, Int32) |
이 멤버는 더 이상 사용되지 않습니다. |
NoteProxyOpNoThrow(String, String) |
이 멤버는 더 이상 사용되지 않습니다. |
Notify() |
이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다. (다음에서 상속됨 Object) |
NotifyAll() |
이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다. (다음에서 상속됨 Object) |
PermissionToOp(String) |
지정된 사용 권한과 연결된 앱 작업 이름을 가져옵니다. |
SetHandle(IntPtr, JniHandleOwnership) |
Handle 속성을 설정합니다. (다음에서 상속됨 Object) |
SetOnOpNotedCallback(IExecutor, AppOpsManager+OnOpNotedCallback) |
새 |
StartOp(String, Int32, String, String, String) |
애플리케이션이 장기 실행 작업을 실행하기 시작했다고 보고합니다. |
StartOp(String, Int32, String) |
이 멤버는 더 이상 사용되지 않습니다. |
StartOpNoThrow(String, Int32, String, String, String) |
을 |
StartOpNoThrow(String, Int32, String) |
이 멤버는 더 이상 사용되지 않습니다. |
StartProxyOp(String, Int32, String, String, String) |
IPC를 처리할 때 애플리케이션이 다른 애플리케이션을 대신하여 장기 실행 작업을 실행하기 시작했다고 보고합니다. |
StartProxyOpNoThrow(String, Int32, String, String, String) |
을 |
StartWatchingActive(String[], IExecutor, AppOpsManager+IOnOpActiveChangedListener) |
앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다. |
StartWatchingMode(String, String, AppOpsManager+IOnOpChangedListener) |
지정된 앱 패키지에서 지정된 작업에 대한 운영 모드 변경 내용을 모니터링합니다. |
StartWatchingMode(String, String, WatchForeground, AppOpsManager+IOnOpChangedListener) |
앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다. |
StopWatchingActive(AppOpsManager+IOnOpActiveChangedListener) |
앱 작업의 활성 상태에 대한 변경 내용 감시를 중지합니다. |
StopWatchingMode(AppOpsManager+IOnOpChangedListener) |
이전에 시작된 모니터링을 중지합니다 |
ToArray<T>() |
앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다. (다음에서 상속됨 Object) |
ToString() |
개체의 문자열 표현을 반환합니다. (다음에서 상속됨 Object) |
UnregisterFromRuntime() |
앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다. (다음에서 상속됨 Object) |
UnsafeCheckOp(String, Int32, String) |
애플리케이션이 작업을 수행할 수 있는지 여부를 빠르게 확인합니다. |
UnsafeCheckOpNoThrow(String, Int32, String) |
을 |
UnsafeCheckOpRaw(String, Int32, String) |
유사 |
UnsafeCheckOpRawNoThrow(String, Int32, String) |
유사 |
Wait() |
현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 <><중단/종료>합니다.> (다음에서 상속됨 Object) |
Wait(Int64, Int32) |
현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 <중단/>종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다. (다음에서 상속됨 Object) |
Wait(Int64) |
현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 <중단/>종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다. (다음에서 상속됨 Object) |
명시적 인터페이스 구현
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) |
앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다. |