如何修改Android自带浏览器的User Agent-MTK软件

 我来答
育知同创教育
2017-05-01 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
最近在研究Android自带的Chrome Lite浏览器,想修改下它的UserAgent,跟踪了下Android2.2的源代码,发现主要要修改如下几个地方:
1.platform/packages/apps/Browser/src/com/android/browser/BrowserSettings.java
2.platform/packages/apps/Browser/res/values/strings.xml
在strings.xml中找到这一段:

view plaincopy to clipboardprint?
<!-- Do not tranlsate. Development option -->
<string-array name="pref_development_ua_choices" translatable="false">
<item>Android</item>
<item>Desktop</item>
<item>iPhone</item>
</string-array>
<!-- Do not tranlsate. Development option -->
<string-array name="pref_development_ua_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>

这一段中pref_development_ua_choices对应的是Browser的debug模式下选择UserAgent时选项的名字,pref_development_ua_values对应的是不同的UserAgent,一会会讲到这些数字分别对应的是什么UserAgent。
在BrowserSettings.java中找到这两段:

view plaincopy to clipboardprint?
private static final String DESKTOP_USERAGENT = "Mozilla/5.0 (Macintosh; " +
"U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, " +
"like Gecko) Version/4.0 Safari/530.17";
private static final String IPHONE_USERAGENT = "Mozilla/5.0 (iPhone; U; " +
"CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 " +
"(KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16";

view plaincopy to clipboardprint?
public void update(Observable o, Object arg) {
BrowserSettings b = (BrowserSettings)o;
WebSettings s = mSettings;
s.setLayoutAlgorithm(b.layoutAlgorithm);
if (b.userAgent == 0) {
// use the default ua string
s.setUserAgentString(null);
} else if (b.userAgent == 1) {
s.setUserAgentString(DESKTOP_USERAGENT);
} else if (b.userAgent == 2) {
s.setUserAgentString(IPHONE_USERAGENT);
}

由此可以看出第一段Java代码是不同的UserAgent字符串,从第二段代码中可以看出strings.xml中那个整数的数组和不同UserAgent的对应关系,0对应默认的UserAgent,即Android Chrome Lite自己的UserAgent,1对应的是Mac OS的UserAgent,2对应的是IPhone OS的UserAgent。
有了上述信息,添加一个自己的UserAgent就不是什么难事了,首先在strings.xml中添加一个UserAgent选项的名字,然后添加一个序号,然后在BrowserSettings.java中添加一个自己的UserAgent字符串,然后在最后一个if后面写一个

view plaincopy to clipboardprint?
else if (b.userAgent == 3) {
s.setUserAgentString(YOUR_OWN_USERAGENT);
}

然后就大功告成了!
力控科技
2024-08-19 广告
ForceSCADA是力控科技信创产品的重要组成部分,具备完全自主知识产权,支持部署在Linux桌面版、服务器版、嵌入式等系统架构下。使用ForceSCADA可以搭建创新性高、扩展性佳、融合度强的SCADA平台,进而构建高效、智能化的监控中... 点击进入详情页
本回答由力控科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式