語言

AppOpsManager 類別

定義

App-ops 有兩個用途:存取控制與追蹤。

[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 有兩個用途:存取控制與追蹤。 App-ops 涵蓋多種功能,從協助執行時權限、存取控制與追蹤,到電池消耗追蹤。 存取控制 App-ops 可以針對每個 UID 或每個套件進行控制。 使用哪一種取決於 API 提供者是否維護這個應用程式操作。 對於任何安全或隱私相關的應用程式操作,服務提供者必須依照 UID 來控制該應用程式,因為所有安全和隱私都是基於 Android 的 UID。 為了控制存取,app-op 可以設定為以下模式:MODE_DEFAULT 預設行為,可能與 app-op 或 app-operator 不同 MODE_ALLOWED 允許存取 MODE_IGNORED 不允許存取,即不執行請求的動作,或回傳 no 或佔位資料 MODE_ERRORED 對存取拋出安全異常。 這可以透過使用......檢查 mode API 提供者的 noThrow 方法,需要檢查 noteOp(String, int, String) 回傳的模式,看看他們是否允許存取被 app-operator 限制的操作。 若未被授權存取,應使用 unsafeCheckOp(String, int, String) 來檢查該模式。 例如,這可以用來在 UI 中顯示 app-op 狀態,或是在之後呼叫 noteOp(String, int, String) 前檢查狀態時。 若操作涉及時間範圍(例如錄音會話),API 提供者應使用 startOp(String, int, String)和 finishOp(String, int, String),而非 noteOp(String, int, String)。 執行時權限與應用程式操作 每個平台定義的執行時權限(背景修飾符旁)都有相應的應用程式操作,用於追蹤,同時也允許無聲失敗。 也就是說,如果執行時權限被拒絕,呼叫者會收到 SecurityException,但如果權限被授予且應用程式操作被MODE_IGNORED,呼叫者就會有佔位符行為,例如位置回撥不會發生。 App-op 權限 App-ops 權限是平台定義的權限,可以被覆蓋。 應用程式操作權限的安全檢查預設應該會檢查權限授權狀態。 如果 app-op 狀態設為 MODE_ALLOWED 或 MODE_IGNORED,應該勾選 app-op 狀態,而不是權限授予狀態。 此功能允許預設授權符合特定權限等級要求的應用程式存取權限。 不過,當需要時,這些行為仍可被覆蓋。 追蹤 Appops 追蹤許多重要事件,包括所有對執行時權限保護 API 的存取。 這是透過追蹤應用程式操作何時被記錄或開始來完成的。 追蹤資料只能由系統元件讀取。 只有 noteOp(String, int, String)/startOp(String, int, String) 會被追蹤;unsafeCheckOp(String, int, String) 不會被追蹤。 因此,當提供受保護操作或資料存取時,最終呼叫 noteOp(String, int, String) 或 startOp(String, int, String) 非常重要。 有些應用程式會轉接到其他應用程式。 例如,應用程式可能會從系統的定位提供者取得位置,然後再將位置傳到第三個應用程式。 此時,傳遞資料的應用程式需要呼叫 noteProxyOp(String, String) 來表示代理存取。 如果存取是在標籤不同歸因標籤的兩個部分間轉發,這在單一應用程式內也可能說得通。 應用程式可以註冊 OnOpNotedCallback,以了解系統追蹤存取者。 由於每個執行時權限都有對應的應用程式操作,此 API 對於想要尋找意外私密資料存取的應用程式特別有用。

Android 參考資料。android.app.AppOpsManager

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

建構函式

名稱 Description
AppOpsManager(IntPtr, JniHandleOwnership)

初始化現有 Java 原生介面物件的受管理表示。

欄位

名稱 Description
ModeAllowed
已淘汰.

#checkOp#noteOp#startOp的結果:給定呼叫者被允許執行該操作。

ModeDefault
已淘汰.

結果由 #checkOp#noteOp#startOp:給定呼叫者應使用其預設的安全檢查。

ModeErrored
已淘汰.

結果來自 #checkOpNoThrow#noteOpNoThrow#startOpNoThrow:給定呼叫者不得執行該操作,且此嘗試應導致致命錯誤,通常是 SecurityException

ModeForeground
已淘汰.

特殊模式的意思是「只有在應用程式在前景時才允許」。

ModeIgnored
已淘汰.

結果來自 #checkOp, , :#noteOp指定的呼叫者不被允許執行該操作,且此嘗試應默#startOp<默失敗>/em<(不應導致>應用程式當機)。

OpNotedCallbackFlagIgnoreAsync
已淘汰.

忽略非同步的原PO記錄事件。

OpstrAddVoicemail

必須取得與手機狀態相關的資訊。

OpstrAnswerPhoneCalls

接聽來電

OpstrBodySensors

可以接觸到身體感測器,例如心率等。

OpstrCallPhone

允許應用程式發起電話通話。

OpstrCamera

必須能夠存取攝影機裝置。

OpstrCoarseLocation

存取粗略位置資訊。

OpstrFineLocation

取得優質位置資訊。

OpstrGetUsageStats

存取 UsageStatsManager。

OpstrManageContacts

App-ops 有兩個用途:存取控制與追蹤。

OpstrMockLocation

將模擬定位注入系統。

OpstrMonitorHighPowerLocation

持續監控位置資料,請求相對較高的功率。

OpstrMonitorLocation

持續監控位置資料。

OpstrPictureInPicture

提供畫中畫存取權。

OpstrProcessOutgoingCalls

用於轉接外撥呼叫的存取 API

OpstrReadCalendar

允許應用程式讀取使用者的行事曆資料。

OpstrReadCallLog

允許應用程式讀取使用者的通話記錄。

OpstrReadCellBroadcasts

閱讀先前收到的手機廣播訊息。

OpstrReadContacts

允許應用程式讀取使用者的聯絡人資料。

OpstrReadExternalStorage

讀取外部儲存。

OpstrReadPhoneNumbers

恆定值:「android:read_phone_numbers」

OpstrReadPhoneState

必須取得與手機狀態相關的資訊。

OpstrReadSms

允許應用程式讀取簡訊訊息。

OpstrReceiveMms

允許應用程式接收 MMS 訊息。

OpstrReceiveSms

允許應用程式接收簡訊。

OpstrReceiveWapPush

允許應用程式接收 WAP 推送訊息。

OpstrRecordAudio

必須能存取麥克風裝置。

OpstrSendSms

允許應用程式發送簡訊。

OpstrSystemAlertWindow

必須在其他應用程式上繪圖。

OpstrUseFingerprint

使用指紋 API。

OpstrUseSip

透過 VOIP 或 WiFi 進行 SIP 通話的存取 API

OpstrWriteCalendar

允許應用程式寫入使用者的行事曆資料。

OpstrWriteCallLog

允許應用程式寫入使用者的通話記錄。

OpstrWriteContacts

允許應用程式寫入使用者聯絡人的資料。

OpstrWriteExternalStorage

寫入外部儲存。

OpstrWriteSettings

必須撰寫/修改/更新系統設定。

WatchForegroundChanges
已淘汰.

標記: #startWatchingMode(String, String, int, OnOpChangedListener)如果操作員的 uid 前景狀態改變,也會收到回報。

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

App-ops 有兩個用途:存取控制與追蹤。

(繼承來源 JavaObject)
JniPeerMembers

提供 Android.App.AppOpsManager 的 JNI 綁定基礎架構。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
ThresholdClass

提供 Android.App.AppOpsManager 的 JNI 綁定基礎架構。

ThresholdType

提供 Android.App.AppOpsManager 的 JNI 綁定基礎架構。

方法

名稱 Description
CheckOp(String, Int32, String, String)

檢查應用程式是否能執行某操作。

CheckOp(String, Int32, String)

檢查應用程式是否能執行某操作。

CheckOpNoThrow(String, Int32, String, String)

類似 checkOp(String, int, String, String),但它不是拋出 SecurityException,而是回傳 MODE_ERRORED。

CheckOpNoThrow(String, Int32, String)

像是 checkOp(String, int, String),但它不是拋出 SecurityException,而是回傳 MODE_ERRORED。

CheckOpRawNoThrow(String, Int32, String, String)

就像 checkOp(String, int, String, String) 一樣,但它會回傳與操作相關的原始模式。

CheckPackage(Int32, String)

此方法在 API 等級 30 中被棄用。

Clone()

建立並回傳此物件的副本。

(繼承來源 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

App-ops 有兩個用途:存取控制與追蹤。

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

App-ops 有兩個用途:存取控制與追蹤。

(繼承來源 JavaObject)
Equals(Object)

App-ops 有兩個用途:存取控制與追蹤。

(繼承來源 JavaObject)
Equals(Object)

表示是否有其他物體「等同」於此物。

(繼承來源 Object)
FinishOp(String, Int32, String, String)

回報應用程式不再執行先前以 startOp(String,int,String,String,String)啟動的操作。

FinishOp(String, Int32, String)

此方法在 API 等級 30 中被棄用。

FinishProxyOp(String, Int32, String, String)

回報應用程式不再執行先前以 startProxyOp(String,int,String,String)啟動的操作。

GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
IsOpActive(String, Int32, String)

檢查該套件的操作是否為有效,也就是說

JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
NoteOp(String, Int32, String, String, String)

記錄應用程式執行操作的情形,並確認該應用程式是否被允許執行該操作。

NoteOp(String, Int32, String)

此方法在 API 等級 30 中被棄用。

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

就像 noteOp(String, int, String, String, String, String) 一樣,但它不是拋出 SecurityException,而是回傳 MODE_ERRORED。

NoteOpNoThrow(String, Int32, String)

此方法在 API 等級 30 中被棄用。

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

在處理 IPC 時,請注意應用程式代表另一個應用程式執行操作的情況。

NoteProxyOp(String, String)

此方法在 API 等級 30 中被棄用。

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

像是 noteProxyOp(String,String,String,int,String,String),但它不是拋出 SecurityException,而是回傳 MODE_ERRORED。

NoteProxyOpNoThrow(String, String, Int32)

此方法在 API 等級 30 中被棄用。

NoteProxyOpNoThrow(String, String)

此方法在 API 等級 30 中被棄用。

Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
PermissionToOp(String)

取得與特定權限相關的應用程式操作名稱。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetOnOpNotedCallback(IExecutor, AppOpsManager+OnOpNotedCallback, AppOpsManagerCallbackFlag)

設定一個新的 OnOpNotedCallback。

SetOnOpNotedCallback(IExecutor, AppOpsManager+OnOpNotedCallback)

設定一個新的 OnOpNotedCallback。

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

App-ops 有兩個用途:存取控制與追蹤。

(繼承來源 JavaObject)
StartOp(String, Int32, String, String, String)

報告應用程式已開始執行一個長期執行的操作。

StartOp(String, Int32, String)

此方法在 API 等級 30 中被棄用。

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

類似 startOp(String, int, String, String, String) 但不是拋出 SecurityException,而是回傳 MODE_ERRORED。

StartOpNoThrow(String, Int32, String)

此方法在 API 等級 30 中被棄用。

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

報告應用程式在處理 IPC 時,已開始代表另一個應用程式執行長期執行的操作。

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

類似 startProxyOp(String, int, String, String, String),但它不是拋出 SecurityException,而是回傳 MODE_ERRORED。

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

開始注意 appops 的主動狀態是否有變化。

StartWatchingMode(String, String, AppOpsManager+IOnOpChangedListener)

監控該應用程式套件中該操作模式的變化。

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

監控該應用程式套件中該操作模式的變化。

StopWatchingActive(AppOpsManager+IOnOpActiveChangedListener)

別再盯著 app 操作的主動狀態變化了。

StopWatchingMode(AppOpsManager+IOnOpChangedListener)

停止之前用 startWatchingMode(String, String, OnOpChangedListener) 啟動的監聽。

ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

回傳物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
UnsafeCheckOp(String, Int32, String)

此方法在 API 等級 36 中被棄用。

UnsafeCheckOpNoThrow(String, Int32, String)

此方法在 API 等級 36 中被棄用。

UnsafeCheckOpRaw(String, Int32, String)

此方法在 API 等級 36 中被棄用。

UnsafeCheckOpRawNoThrow(String, Int32, String)

此方法在 API 等級 36 中被棄用。

Wait()

導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。

(繼承來源 Object)
Wait(Int64, Int32)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

App-ops 有兩個用途:存取控制與追蹤。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

App-ops 有兩個用途:存取控制與追蹤。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

App-ops 有兩個用途:存取控制與追蹤。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

App-ops 有兩個用途:存取控制與追蹤。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

App-ops 有兩個用途:存取控制與追蹤。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

App-ops 有兩個用途:存取控制與追蹤。

(繼承來源 JavaObject)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

App-ops 有兩個用途:存取控制與追蹤。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於