![](/img/trans.png)
[英]how to access the third party browser control like chrome in android?
[英]Control access of third party APIs to Android system resources?
在您的Android項目中導入第三方API(數據包依賴注入,生成的庫,源代碼等)時,您會假定它們的行為與廣告中所宣傳的一樣。 大多數時候,代碼不是開源的,它們被混淆或只是被編譯。
有沒有辦法控制此API對重要系統資源(例如網絡,聯系人,視頻和音頻,位置)的訪問?
最好的方法是為它們提供系統資源的proxy
。 這將具有以下好處:
由於用戶定義的活動和服務無法控制第三方API的服務,甚至無法阻止它們直接調用任何Android公共接口,因此我無法找到解決方案的實現方式。
該解決方案不需要root用戶訪問權限,因為您不想讓此控件超出您自己的應用程序的范圍。
這個問題的內容與解決這個廣泛問題的特殊性的幾個問題相關聯( 內容提供商的日志數據 , 網絡請求 -使我在研究答案時考慮這個問題)
注意 :簡短的答案是“否”,但一個人可能足夠有創意(也許進行本機級黑客攻擊可能會解決此問題-idk)
在名為com.myproxies的包中(例如MediaRecorder,SensorManager,Camera,java.net.HTTPURLConnection)為要保護的所需Android資源構建代理類。在代理中,您需要實現該類的所有公共方法在嘲笑,您需要實施邏輯以允許訪問(轉發到適當的方法)或拒絕。 一個有用的步驟是檢查方法的調用者 。
如果您打算導入源代碼,請重構代碼以將包更改為代理(Proguard可以提供幫助)。
如果您使用的是庫,請獲取Jar Jar Links ,該實用程序可以輕松地重新打包Java庫並將其嵌入到您自己的發行版中,並將內部包名稱更改為包中用作代理的類的名稱。 。
如果您使用的是Maven或Gradle軟件包依賴項注入,則還可以嘗試導入Jar Jar Links並在編譯時執行軟件包重構(不是很確定可以做到)。
不幸的是,按照我的經驗,很容易破壞API,並且涉及大量的體力勞動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.