更改浏览器设置中的搜索引擎
1.需求
将浏览器设置中的搜索引擎更改为XXXX, 谷歌搜索,百度搜索。默认 XXXX 选中。
2.分析源码
我们先找到浏览器的设置界面代码,com.android.browser.BrowserPreferencesPage.java 构造界面部分代码在 onCreate 函数中
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);

//LoadtheXMLpreferencesfile
addPreferencesFromResource(R.xml.browser_preferences);
这里我们看到它是通过xml 配置文件来构造界面的,这个文件存放在工程下的 res/xml/browser_preferences.xml 。里面对于 searchengine 是这样定义的:
<com.android.browser.search.SearchEnginePreference
android:key="search_engine"
android:title="@string/pref_content_search_engine"
android:defaultValue="google"
android:summary="@string/pref_content_search_engine_summary"
android:dialogTitle="@string/pref_content_search_engine"/>
我们继续顺藤摸瓜,找到SearchEnginePreference.java 这里面对于 searchengin 又是通过 SearchEngines 类静态方法 getSearchEngineInfos 来获取的,这个方法实现如下代码:
publicstaticList<SearchEngineInfo>getSearchEngineInfos(Contextcontext){
ArrayList<SearchEngineInfo>searchEngineInfos=newArrayList<SearchEngineInfo>();
Resourcesres=context.getResources();
String[]searchEngines=res.getStringArray(R.array.search_engines);
for(inti=0;i<searchEngines.length;i++){
Stringname=searchEngines[i];
SearchEngineInfoinfo=newSearchEngineInfo(context,name);
searchEngineInfos.add(info);
}
returnsearchEngineInfos;
}
看到R.array.search_engines 我们就找到配置搜索引擎的数据源头了,在 res/values/donottranslate-search_engines.xml 中。定义如下:
<!--
****
****THISFILEWASGENERATEDBYtools/get_search_engines.py
****

Eachvalueinthestring-arrayisthenameofavalueinall_search_engines.xml
-->
<resourcesxmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string-arrayname="search_engines"translatable="false">
<item>google</item>
<item>baidu</item>
<item>Yahoo</item>
</string-array>
</resources>
注释中已经提醒我们,这里的item 只是一个引用,真正的定义在 all_search_engines.xml 中。这样也是方便不同区域语言下的搜索引擎管理。集中到一个文件中定义,避免不必要的重复数据。
3.修改
这下都搞清楚了就好修改了。首先在all_search_engines.xml 中添加对 XXX 搜索引擎的定义,然后修改 donottranslate-search_engines.xml 中的 item. 在实际操作中有几点还有说明下。
Yahoo_uk 为例
<string-arrayname="yahoo_uk"translatable="false">
<item>Yahoo!UK&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}&fr=crmas&p={searchTerms}</item>
<item>UTF-8</item>
<item>http://uk-sayt.ff.search.yahoo.com/gossip-uk-sayt?output=fxjson&command={searchTerms}</item>
</string-array>
每个searchEngine 都定义了 6 <item> 从上到下依次表示显示标签,关键字,搜索图标,搜索引擎地址,编码方式,搜索提示地址。这些值因区域语言不同而不同。所以对不同的区域可能需要定义不同的搜索引擎。我们这里需要添加一个支持中国地区的 xxx 定义就可以了。
<string-arrayname="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}&fr=crmas&p={searchTerms}</item>
<item>GB2312</item>
<item></item>
</string-array>

更多相关文章

  1. android自定义dialog,软件键盘弹出挡住输入区域解决
  2. Android(安卓)App项目开发步骤小结
  3. 【边做项目边学Android】手机安全卫士05_2:程序主界面,为每个条目
  4. Android(安卓)常用的Intent的URI及示例
  5. 保持应用程序界面不随手机转动而转动 解决方法
  6. Android(安卓)framework自定义待机广播(可静态注册)
  7. android零碎学习记录之 TextSwithcer
  8. 手机上的HTML5框架 Sencha Touch
  9. Android(安卓)go 自定义静态广播接收不到的问题

随机推荐

  1. android: what is the difference betwee
  2. java版android Handler机制模型
  3. Android直播系统平台搭建之图片实现阴影
  4. Android实现雅虎新闻摘要加载视差动画效
  5. TextInput 需要注意的点
  6. 如何打造稳定、好用的 Android(安卓)Layo
  7. FFmpeg 调用 Android(安卓)MediaCodec 进
  8. Android(安卓)程序员的进阶之路(转)
  9. 开源分享!2021年最新 Android(安卓)资料汇
  10. Android(安卓)消息机制 你了解多少