Android Browser搜索引擎設置和添加

在做android4.0俄羅斯項目時,瀏覽器需要設置默認所在地區的搜索引擎,經過查看代碼,終於知道了搜索引擎在android中的設置流程,在這裏跟大家分享一下。
 
搜索引擎的設置在Browser->settings->advanced->set search engine,不同語言環境下的選項會有所不同,通過分析源碼,我先找到瀏覽器搜索引擎的設置代碼, SearchEnginePreference.java 這裏面對於search engin又是通過SearchEngines類靜態方法getSearchEngineInfos來獲取的,這個方法實現如下代碼:
public static List<SearchEngineInfo> getSearchEngineInfos(Context context) {
ArrayList<SearchEngineInfo> searchEngineInfos = new ArrayList<SearchEngineInfo>();
Resources res = context.getResources();
String[] searchEngines = res.getStringArray(R.array.search_engines);
for (int i = 0; i < searchEngines.length; i++) {
String name = searchEngines[i];
SearchEngineInfo info = new SearchEngineInfo(context, name);
searchEngineInfos.add(info);
}
return searchEngineInfos;
}
看到R.array.search_engines我們就找到配置搜索引擎的數據源頭了,在res/values/search_engines.xml中。 定義如下:
<!--
****
**** THIS FILE WAS GENERATED BY tools/get_search_engines.py
****

Each value in the string-array is the name of a value in all_search_engines.xml
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string-array name="search_engines" translatable="false">
<item>google</item>
<item>baidu</item>
<item>Yahoo</item>
</string-array>
</resources>
因爲在不同的語言包中都會有這麼一個數組的定義,而且其中的item有所區別,這就解釋了前面中說到的在不同語言環境中設置搜索引擎的選項中的元素是不同的。
繼續看,註釋中已經提醒我們,這裏的item只是一個引用,真正的定義在all_search_engines.xml中。這樣也是方便不同區域語言下的搜索引擎管理。集中到一個文件中定義,避免不必要的重複數據,也就是說瀏覽器所支持的所有搜索引擎都在這裏,我們要添加一個支持的搜索引擎也要在這裏添加。
在all_search_engines.xml中添加對XXX搜索引擎的定義,然後修改search_engines.xml中的item. 在實際操作中有幾點還有說明下。
以Yahoo_uk爲例
<string-array name="yahoo_uk" translatable="false"> //調用引擎的id
<item>Yahoo! UK &amp; Ireland</item> //顯示名稱
<item>uk.yahoo.com</item> //地址
<item>http://uk.search.yahoo.com/favicon.ico</item> //網絡圖標顯示
<item>http://uk.search.yahoo.com/search?ei={inputEncoding}&amp;fr=crmas&amp;p={searchTerms}</item>
<item>UTF-8</item> //編碼格式
<item>http://uk-sayt.ff.search.yahoo.com/gossip-uk-sayt?output=fxjson&amp;command={searchTerms}</item>
</string-array>
每個searchEngine都定義了6個<item>從上到下依次表示顯示標籤,關鍵字,搜索圖標,搜索引擎地址,編碼方式,搜索提示地址。 這些值因區域語言不同而不同。所以對不同的區域可能需要定義不同的搜索引擎。我們這裏需要添加一個支持中國地區的xxx定義就可以了。
<string-array name="xxxx" translatable="true">
<item>@string/xxxx_str</item>
<item>xxx.xxx.com</item>
<item>http://xxx.xxx.com/favicon.ico</item>
<item>http:// xxx.xxx.com/search?ei={inputEncoding}&amp;fr=crmas&amp;p={searchTerms}</item>
<item>GB2312</item>
<item></item>
</string-array>
 
我所添加的搜索引擎是已經定義好的,只需要在默認語言包的數組中添加其id就可以,然後在xml/advanced_preferences.xml中設置一下默認就ok了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章