AppOpsManager 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
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
- 繼承
- 屬性
備註
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 |
已淘汰.
由 |
| ModeDefault |
已淘汰.
結果由 |
| ModeErrored |
已淘汰.
結果來自 |
| ModeForeground |
已淘汰.
特殊模式的意思是「只有在應用程式在前景時才允許」。 |
| ModeIgnored |
已淘汰.
結果來自 |
| 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 |
已淘汰.
標記: |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| 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 |
|---|---|
| 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) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
App-ops 有兩個用途:存取控制與追蹤。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |