[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接下來就是把所有異常的報名統一替換掉
重新編譯執行,收藏夾和歷史記錄就是新的了