當前位置:編程學習大全網 - 源碼下載 - 如何修改Android中Browser的UserAgent

如何修改Android中Browser的UserAgent

最近在研究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);

}

然後就大功告成了!

  • 上一篇:金絲燕窩多少錢壹盒
  • 下一篇:指示器源代碼年鑒
  • copyright 2024編程學習大全網