1. 程式人生 > >[chromium][browser][idea][open] 如何重寫自己的android.provider.Browser

[chromium][browser][idea][open] 如何重寫自己的android.provider.Browser

AOSP的Browser中使用的是系統的android.provider.Browser,如果想自己管理一套收藏夾和訪問歷史,可以試著重寫一下


1、新包中新增frameworks\base\core\java\android\provider中的BrowserContract.java和Browser.java

2、Browser.java中的WebIconDatabase改成自身的


接下來是如何把android.provider.Browser進行替換的問題,我用的是土辦法,

把sdk的android.jar中先把android.provider.Browser刪除(記得要備份一個android.jar)

把引用的framework_intermediates和framework-base_intermediates中android.provider.Browser和BrowserContract都刪除


然後重新整理工程,看到一堆錯誤出現,其中content、chrome和browser三個部分都會報錯

先不急著修改包名,我們需要把裡面的關鍵字先改掉


3、AndroidMannifest中加上自己的.provider.BrowserProvider2,修改authorities名稱為自己的關鍵字

      Permission也改成自己的包名。

4、修改BrowserProvider

1)sDatabaseName名稱

2)把getBookmarksSuggestions中browser改成自定義的

5、修改BrowserProvider2

1)把LEGACY_AUTHORITY修改成自定義的

6、新建provider的BrowserContract中修改

1)AUTHORITY改成自定義的

6、新建provider的Browser中修改

1)BOOKMARKS_URI、SEARCHES_URI、EXTRA_HEADERS、EXTRA_APPLICATION_ID、INITIAL_ZOOM_LEVEL修改成自定義的

7、修改chrome中ChromeBrowserProvider的

1)API_AUTHORITY_SUFFIX

2)BROWSER_CONTRACT_AUTHORITY

3)mUriMatcher.addURI("browser" ......


8接下來就是把所有異常的報名統一替換掉


重新編譯執行,收藏夾和歷史記錄就是新的了