我沒有找到一個帖子,要求與我一樣的限制。限制訪問內容提供商
我有一個應用程序向其他應用程序(稱之爲客戶端應用程序)提供內容提供者(稱爲主應用程序)。我想限制客戶端應用程序對內容提供者的訪問,以便僅支持插入和可能查詢方法。
我不想要什麼:
- 使內容供應商的私密,因爲主要目標是提供一個數據庫客戶端應用程序。
- 限制客戶端應用程序的簽名訪問,因爲任何人都必須能夠編寫使用主應用程序平臺的客戶端應用程序。
我看到的最明顯的解決方案是編寫兩個內容提供者,一個擁有主應用程序的完全訪問權限,另一個受限制的公共權限。但我認爲這絕對不是一個正確的方法。
根據這個Google groups post,我想在內容提供者調用中使用Binder.getCallingUid()
來檢測這個調用是否來自主應用程序。所以我不能在更新和刪除方法,如果調用不來自主應用程序。
我怎麼能得到主要應用程序UID比較?如果有可能,這個解決方案是否安全?
感謝您的建議。
如果我理解正確,包含內容提供程序組件的應用程序應該是唯一具有寫入權限的應用程序。那麼爲什麼不通過Content Provider接口使用該功能呢?在這種情況下,內容提供者只會支持查詢接口。 – Sameer
不幸的是,客戶端應用程序所需的主要訪問權限是插入。所以他們也需要寫訪問權限。但是你是對的,主應用程序不需要使用內容提供者,但它會增加太多的複雜性和可維護性。 – FabiF
好,還是一樣的一點。主應用程序可以直接插入,更新和刪除,而無需通過Content Provider界面。 Content Provider只提供插入和查詢接口。 – Sameer