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了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值