因XXXX对浏览器业务的定制需求,需要基于Android 浏览器应用进行二次开发,下面结合Browser源码,将开发过程中遇到的一些问题与经验和大家共享下。
(XXXX部分涉及到信息安全,不便透露)
第一章 更改浏览器设置中的搜索引擎
1. 需求
将浏览器设置中的搜索引擎更改为XXXX, 谷歌搜索,百度搜索。默认XXXX选中。
2. 分析源码
我们先找到浏览器的设置界面代码, com.android.browser.BrowserPreferencesPage.java 构造界面部分代码在onCreate函数中
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the XML preferences file
addPreferencesFromResource(R.xml.browser_preferences);
这里我们看到它是通过xml配置文件来构造界面的,这个文件存放在工程下的res/xml/browser_preferences.xml。里面对于search engine是这样定义的:
<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 这里面对于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只是一个引用,真正的定义在all_search_engines.xml中。这样也是方便不同区域语言下的搜索引擎管理。集中到一个文件中定义,避免不必要的重复数据。
3. 修改
这下都搞清楚了就好修改了。首先在all_search_engines.xml中添加对XXX搜索引擎的定义,然后修改search_engines.xml中的item. 在实际操作中有几点还有说明下。
以Yahoo_uk为例
<string-array name="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-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}&fr=crmas&p={searchTerms}</item>
<item>GB2312</item>
<item></item>
</string-array>
分享到:
相关推荐
通过对Android 4.0 Browser的源码进行研究,开发者不仅可以学习到Android系统层面的知识,还能掌握浏览器开发的核心技术,这对于创建自己的Android浏览器或者优化现有应用的网络和渲染性能都极具价值。但需要注意,...
【标题】"android_browser.rar" 是一个针对 Android 平台的项目,专注于开发 Android 自带浏览器的调用和交互。这个压缩包包含了开发一个能够与 Android 系统浏览器交互的应用程序所需的所有源代码和配置文件。 ...
Android 4.0 Browser浏览器源代码是Android操作系统中内置浏览器的开发基础,它包含了实现一个功能完备、高效、用户友好的Web浏览体验的所有组件。这个模块涵盖了应用层的源码,为开发者提供了一个深入理解Android...
通过分析Browser模块的源代码,开发者可以学习到Android系统中如何实现一个功能完善的浏览器,这对于理解Android系统工作原理,以及开发自己的WebView应用都是非常有帮助的。同时,对于进行性能优化、安全增强或者...
浏览器(com.android.browser).bak
Android 4.0 Browser源码分析 Android 4.0,也称为Ice Cream Sandwich (ICS),是...此外,源码还提供了处理用户交互、数据持久化、网络请求、性能优化等方面的知识,对于Android开发人员来说是一份宝贵的教育资源。
在Android系统中,内置的浏览器是基于开源的WebKit渲染引擎构建的。WebKit是一个强大的、高性能的Web内容解析和渲染引擎,被广泛应用于各种操作系统和移动设备。本篇将深入探讨Android浏览器与WebKit的结合,以及...
《Android浏览器代码分析:深入理解Browser机制》 在Android系统中,内置的Browser应用是用户访问互联网的重要途径。本文将通过详细的代码分析,配合UML(统一建模语言)图,帮助开发者深入理解Browser的工作原理,...
在Android平台上开发一款手机浏览器,是一项涉及多个技术领域的工作,包括网络通信、用户界面设计、渲染引擎、数据存储以及性能优化等。以下是对这个项目的关键知识点的详细解释: 1. **Android开发环境**:首先,...
在Android应用开发中,WebView是一个至关重要的组件,它是Android系统内置的轻量级浏览器引擎,用于在应用程序内部显示网页内容。开源Android浏览器通常会基于WebView进行定制,以提供更高效、安全和个性化的浏览...
Zirco-Browser是一款基于Android平台的开源浏览器,其源码为我们提供了一窥移动浏览器内部运作机制的宝贵机会。通过研究这款浏览器的源码,我们可以学习到许多关于Android应用开发、网络通信、页面渲染以及性能优化...
UC浏览器Turbo版是夸克浏览器的国际版,针对...目前最新版UC Browser Turbo1.4.2.893没有中文版,搜索引擎也是谷歌和必应。经本人汉化为中文版,修改了默认搜索引擎为百度。这是一款极简设计的浏览器,使用非常不错。
在Android应用开发中,内嵌浏览器(In-App Browser)是一种常见的功能,它允许用户在应用程序内部浏览网页,而无需跳转到外部浏览器。本文将详细介绍Android中的内嵌浏览器实现,特别是基于WappBrowser的实践。 ...
最近有个项目,发现MIUI v5自带浏览器的效果不错,想模仿写一个,但总是不像,网上找了好多资料都不太对,花了一下午的时间好好研究了一番。 demo代码量非常精简,模块化设计,移植方便,只要先对res下面的文件都加...
在Android Browser中,WebKit与Android系统紧密集成,提供了JavaScript引擎V8以及布局和渲染引擎WebCore。UML图中的类图(Class Diagram)可揭示这些组件之间的关系。 2. **主界面与控件** Android Browser的用户...
本文将深入探讨一个旨在超越海豚浏览器的开源项目——Zirco-browser,通过分析其源码,揭示安卓浏览器开发背后的技术细节,为有志于安卓应用开发的工程师提供宝贵的学习资源。 Zirco-browser项目,作为一个基于Java...
Yandex浏览器介绍 Yandex是来自俄罗斯搜索巨头的一款浏览器,该浏览器具有超强的数据压缩能力,能够实现页面的快速加载。 应用特色: 1、将搜索栏和地址栏合二为一 2、搜索栏和地址栏将出现在手机底部,在你打开的...
Android Zirco-browser是一款专为Android平台设计的开源浏览器,其目标是超越海豚浏览器,提供更高效、更安全的浏览体验。这款浏览器的源码公开,对于学习Android开发,尤其是浏览器应用开发的学生来说,是一个极其...
在Android 8.0系统中,内置的Browser2是一个重要的组成部分,它为用户提供了浏览网页的基本功能。这个浏览器是Google为了提升用户体验而精心设计的,特别是在Android 8.0(代号Oreo)这一版本中,它融合了多项技术...