1.Android自带浏览器的UAProfile实现
1) UI设置
在Android浏览器的地址栏内输入“about:debug”,并进入,这时不会有新的网页显示,但这却使浏
览器进入了debug模式。
在Menu菜单中选择“More”,在弹出的菜单中选择“Settings”,在弹出的页面上你会发现多了一些
“debug”相关项,最后一项即为“UAString”,点击,弹出当前的已有的配置项
2)代码实现:
strings.xml: \packages\apps\Browser\res\values\strings.xml
其中有如下一段:
<!-- 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:对应的是UserAgent时选项的名字
pref_development_ua_values:对应的是不同的UserAgent,
BrowserSettings.java:\packages\apps\Browser\src\com\android\browser\BrowserSettings.java
其中有如下代码:
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";
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。
2. 设置自己的UAProfile
1) 在strings.xml中添加一个UserAgent选项的名字,然后添加一个序号
2) 在BrowserSettings.java中读取自己的UserAgent字符串,然后再加一个if:
else if (b.userAgent == 3) {
s.setUserAgentString(YOUR_OWN_USERAGENT);
1) UI设置
在Android浏览器的地址栏内输入“about:debug”,并进入,这时不会有新的网页显示,但这却使浏
览器进入了debug模式。
在Menu菜单中选择“More”,在弹出的菜单中选择“Settings”,在弹出的页面上你会发现多了一些
“debug”相关项,最后一项即为“UAString”,点击,弹出当前的已有的配置项
2)代码实现:
strings.xml: \packages\apps\Browser\res\values\strings.xml
其中有如下一段:
<!-- 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:对应的是UserAgent时选项的名字
pref_development_ua_values:对应的是不同的UserAgent,
BrowserSettings.java:\packages\apps\Browser\src\com\android\browser\BrowserSettings.java
其中有如下代码:
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";
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。
2. 设置自己的UAProfile
1) 在strings.xml中添加一个UserAgent选项的名字,然后添加一个序号
2) 在BrowserSettings.java中读取自己的UserAgent字符串,然后再加一个if:
else if (b.userAgent == 3) {
s.setUserAgentString(YOUR_OWN_USERAGENT);