瞭解 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 程式不可以直接操作「權限」,請不要誤解。

提示

幫助中的其他地方仍稱其為「權限」。

App Ops 的限制

可以修改的權限取決於系統

App Ops 所能修改的權限只取決於你的系統,所以别再问「为什么没有 XXX 权限」了。

通常,系統版本越高,能修改的內容越多(廠商或自定義 ROM 可能會新增自己的權限)。所有你的系統支援的權限可以在 設定 - 行為 - 全部權限 中看到。

程式仍可以獲知沒有權限

程式可以檢查返回資料是否為空白,或是直接檢查 "appops" 是否被允許。只是很少有程式這麼做。