다음을 통해 공유


AppOpsManager 클래스

정의

앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다.

[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
상속
AppOpsManager
특성

설명

앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다.

App-ops는 런타임 권한 액세스 제어 및 추적에서 배터리 사용량 추적에 이르기까지 다양한 기능을 다룹니다.

<h2>액세스 제어</h2>

앱 작업은 각 uid 또는 각 패키지에 대해 제어할 수 있습니다. 사용되는 것은 이 앱 작업을 유지 관리하는 API 공급자에 따라 달라집니다. 모든 보안 또는 개인 정보 보호 관련 앱 작업을 위해 공급자는 모든 보안 및 개인 정보 보호가 Android의 uid를 기반으로 하므로 uid당 앱 작업을 제어해야 합니다.

app-op 액세스를 제어하려면 모드로 설정할 수 있습니다. <dl><dt#MODE_DEFAULT><dd>기본 동작, app-op 또는 app-op <dt<>#MODE_ALLOWEDdd>와 다를 수 있습니다. 액세스 <dt#MODE_IGNORED><dd>가 액세스를 허용하지 않도록 허용합니다. 즉, 요청된 작업을 수행하거나 액세스 시 dt dd throw를 반환하지 않거나 자리 표시자 데이터 <dt><#MODE_ERROREDdd>를 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.AppOpsManagerJava 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

생성자

AppOpsManager(IntPtr, JniHandleOwnership)

JNI 개체의 관리되는 표현을 만들 때 사용되는 생성자입니다. 런타임에서 호출합니다.

필드

ModeAllowed
사용되지 않음.

결과 , #checkOp#noteOp#startOp: 지정된 호출자가 지정된 작업을 수행할 수 있습니다.

ModeDefault
사용되지 않음.

결과 , #checkOp#noteOp#startOp: 지정된 호출자가 기본 보안 검사를 사용해야 합니다.

ModeErrored
사용되지 않음.

결과 , #checkOpNoThrow#noteOpNoThrow#startOpNoThrow: 지정된 호출자가 지정된 작업을 수행할 수 없으며, 이 시도로 인해 심각한 오류(일반적으로 .)SecurityException가 발생합니다.

ModeForeground
사용되지 않음.

"앱이 포그라운드에 있는 경우에만 허용"을 의미하는 특수 모드입니다.

ModeIgnored
사용되지 않음.

결과 , #checkOp#noteOp#startOp: 지정된 호출자가 지정된 작업을 수행할 수 없으며, 이 시도는 자동으로 실패</종료>되어야 합니다<>(앱이 충돌하지 않아야 합니다).

OpstrAddVoicemail

전화 상태 관련 정보에 액세스하는 데 필요합니다.

OpstrAnswerPhoneCalls

수신 전화 응답

OpstrBodySensors

심박수 등과 같은 신체 센서에 대한 액세스

OpstrCallPhone

애플리케이션에서 전화 통화를 시작할 수 있습니다.

OpstrCamera

카메라 디바이스에 액세스할 수 있어야 합니다.

OpstrCoarseLocation

거친 위치 정보에 액세스합니다.

OpstrFineLocation

고급 위치 정보에 액세스합니다.

OpstrGetUsageStats

에 대한 액세스 권한 android.app.usage.UsageStatsManager

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
사용되지 않음.

플래그 #startWatchingMode(String, String, int, OnOpChangedListener): op의 uid의 전경 상태가 변경되는 경우에도 보고서를 가져옵니다.

속성

Class

Object런타임 클래스를 반환합니다.

(다음에서 상속됨 Object)
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)

이 멤버는 더 이상 사용되지 않습니다.

FinishOp(String, Int32, String, String)

애플리케이션이 이전에 시작된 작업을 더 이상 수행하지 않는다고 보고합니다 #startOp(String, int, String, String, String).

FinishProxyOp(String, Int32, String, String)

애플리케이션이 이전에 시작된 작업을 더 이상 수행하지 않는다고 보고합니다 #startProxyOp(String, int, String, String, String).

GetHashCode()

개체에 대한 해시 코드 값을 반환합니다.

(다음에서 상속됨 Object)
IsOpActive(String, Int32, String)

패키지에 대해 지정된 작업이 활성 상태인지 여부를 확인합니다.

JavaFinalize()

가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다.

(다음에서 상속됨 Object)
NoteOp(String, Int32, String)

이 멤버는 더 이상 사용되지 않습니다.

NoteOp(String, Int32, String, String, String)

작업을 수행하는 애플리케이션을 기록하고 애플리케이션이 작업을 수행할 수 있는지 확인합니다.

NoteOpNoThrow(String, Int32, String)

이 멤버는 더 이상 사용되지 않습니다.

NoteOpNoThrow(String, Int32, String, String, String)

#noteOp(String, int, String, String, String) throw하는 SecurityException#MODE_ERRORED대신 반환됩니다.

NoteProxyOp(String, String)

이 멤버는 더 이상 사용되지 않습니다.

NoteProxyOp(String, String, Int32, String, String)

IPC를 처리할 때 다른 애플리케이션을 대신하여 작업을 수행하는 애플리케이션을 기록해 둡다.

NoteProxyOpNoThrow(String, String)

이 멤버는 더 이상 사용되지 않습니다.

NoteProxyOpNoThrow(String, String, Int32)

이 멤버는 더 이상 사용되지 않습니다.

NoteProxyOpNoThrow(String, String, Int32, String, String)

#noteProxyOp(String, String, int, String, String) throw하는 SecurityException#MODE_ERRORED대신 반환됩니다.

Notify()

이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다.

(다음에서 상속됨 Object)
NotifyAll()

이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다.

(다음에서 상속됨 Object)
PermissionToOp(String)

지정된 사용 권한과 연결된 앱 작업 이름을 가져옵니다.

SetHandle(IntPtr, JniHandleOwnership)

Handle 속성을 설정합니다.

(다음에서 상속됨 Object)
SetOnOpNotedCallback(IExecutor, AppOpsManager+OnOpNotedCallback)

OnOpNotedCallback을 설정합니다.

StartOp(String, Int32, String)

이 멤버는 더 이상 사용되지 않습니다.

StartOp(String, Int32, String, String, String)

애플리케이션이 장기 실행 작업을 실행하기 시작했다고 보고합니다.

StartOpNoThrow(String, Int32, String)

이 멤버는 더 이상 사용되지 않습니다.

StartOpNoThrow(String, Int32, String, String, String)

#startOp(String, int, String, String, String) throw하는 SecurityException#MODE_ERRORED대신 반환됩니다.

StartProxyOp(String, Int32, String, String, String)

IPC를 처리할 때 애플리케이션이 다른 애플리케이션을 대신하여 장기 실행 작업을 실행하기 시작했다고 보고합니다.

StartProxyOpNoThrow(String, Int32, String, String, String)

#startProxyOp(String, int, String, String, String) throw하는 SecurityException#MODE_ERRORED대신 반환됩니다.

StartWatchingActive(String[], IExecutor, AppOpsManager+IOnOpActiveChangedListener)

앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다.

StartWatchingMode(String, String, AppOpsManager+IOnOpChangedListener)

지정된 앱 패키지에서 지정된 작업에 대한 운영 모드 변경 내용을 모니터링합니다.

StartWatchingMode(String, String, WatchForeground, AppOpsManager+IOnOpChangedListener)

앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다.

StopWatchingActive(AppOpsManager+IOnOpActiveChangedListener)

앱 작업의 활성 상태에 대한 변경 내용 감시를 중지합니다.

StopWatchingMode(AppOpsManager+IOnOpChangedListener)

이전에 시작된 모니터링을 중지합니다 #startWatchingMode.

ToArray<T>()

앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다.

(다음에서 상속됨 Object)
ToString()

개체의 문자열 표현을 반환합니다.

(다음에서 상속됨 Object)
UnregisterFromRuntime()

앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다.

(다음에서 상속됨 Object)
UnsafeCheckOp(String, Int32, String)

애플리케이션이 작업을 수행할 수 있는지 여부를 빠르게 확인합니다.

UnsafeCheckOpNoThrow(String, Int32, String)

#checkOp throw하는 SecurityException#MODE_ERRORED대신 반환됩니다.

UnsafeCheckOpRaw(String, Int32, String)

유사 #checkOp 하지만 op과 연결된 em>raw</em> 모드를 반환<합니다.

UnsafeCheckOpRawNoThrow(String, Int32, String)

유사 #unsafeCheckOpNoThrow(String, int, String) 하지만 op과 연결된 em>raw</em> 모드를 반환<합니다.

Wait()

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 <><중단/종료>합니다.>

(다음에서 상속됨 Object)
Wait(Int64)

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 <중단/>종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다.

(다음에서 상속됨 Object)
Wait(Int64, Int32)

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 <중단/>종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다.

(다음에서 상속됨 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)

앱 작업은 액세스 제어 및 추적의 두 가지 용도로 사용됩니다.

적용 대상