# 瞭解 App Ops
簡而言之,App Ops 是一個修改 Android 系統中的 "appops" 設定 的程式。
# 什麼是 Android 系統中的 "appops"
在 Android 系統中存在一個叫做 "appops" 的系統服務,該服務定義了一系列的「程式操作」(application operation, op)。其中部分「程式操作」與「權限」對應(如 OP_CAMERA
與「相機權限」),其餘則對應單獨的功能(如 OP_READ_CLIPBOARD
與讀取剪貼簿,但並不存在「讀取剪貼簿權限」)。
原生 Android 系統使用 appops 來追蹤權限使用,appops 也部分被用於權限控制。每個程式都有自己的 "appops" 設定,當程式需要執行某些操作時,系統在檢查權限的同時也會檢查 "appops" 設定。如果沒有授予權限,程式在執行操作時將會收到錯誤。但不同的是,如果 "appops" 設為忽略〔1〕,程式不會收到錯誤只會收到空白資料〔2〕。
但是原生 Android 系統並沒有提供修改 "appops" 設定的使用者介面。
〔1〕 App Ops 程式中實際將「忽略」顯示為「拒絕」
〔2〕 實際行為取決於系統,程式也可檢查 "appops" 是否被拒絕
# 什麼是 App Ops 程式
App Ops 程式的核心功能是修改系統 "appops" 設定,可以在某種意義上實現權限管理。App Ops 程式還做出很多努力簡化許多技術細節,讓使用更加簡單。
# 用語宣告
# 「權限」
App Ops 實際修改的是「程式操作」而非「權限」,但為了降低難度將其稱為「權限」。App Ops 程式不可以直接操作「權限」,請不要誤解。
TIP
幫助中的其他地方仍稱其為「權限」。
# App Ops 的限制
# 可以修改的權限取決於系統
App Ops 所能修改的權限只取決於你的系統,所以别再問「為什麼沒有 XXX 權限」了。
通常,系統版本越高,能修改的內容越多(廠商或自定義 ROM 可能會新增自己的權限)。所有你的系統支援的權限可以在 設定 - 行為 - 全部權限 中看到。
# 程式仍可以獲知沒有權限
程式可以檢查返回資料是否為空白,或是直接檢查 "appops" 是否被允許。只是很少有程式這麼做。