在Android的Browser中设置User Agent


默认的Android的Browser中无法设置User Agent,但是在Browser的源码中可以看到,android提供了4中User Agent 具体代码如下:

在Browser的 src/com/android/browser/BrowserSettings.java

  1. private static final String DESKTOP_USERAGENT = "Mozilla/5.0 (Macintosh; " +  
  2.            "U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, " +  
  3.            "like Gecko) Version/5.0 Safari/533.16";  
  4.   
  5.    private static final String IPHONE_USERAGENT = "Mozilla/5.0 (iPhone; U; " +  
  6.            "CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 " +  
  7.            "(KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7";  
  8.   
  9.    private static final String IPAD_USERAGENT = "Mozilla/5.0 (iPad; U; " +  
  10.            "CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 " +  
  11.            "(KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10";  
  12.   
  13.    private static final String FROYO_USERAGENT = "Mozilla/5.0 (Linux; U; " +  
  14.            "Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 " +  
  15.            "(KHTML, like Gecko) Version/4.0 Mobile Safari/533.1";  

提供了4中不同的User Agent,但是在浏览器中无法进行设置。

在Browser的setting中添加设置User Agent的选项:

1.在 res/xml/browser_preferences.xml中添加:

  1. <string name="pref_user_agent">User agent</string>  
  2.   
  3.  <string name="pref_user_agent_dialogtitle"  translatable="false">User Agent</string>  
  4.   
  5. <string-array name="pref_user_agent_options">  
  6.     <item>Desktop</item>  
  7.     <item>Mobile</item>  
  8.     <item>Ipad</item>  

<item>Froyo</item>  

  1. </string-array>  
  2.   
  3. <string-array name="pref_user_agent_values" translatable="false">  
  4.     <item>1</item>  
  5.     <item>2</item>  
  6.     <item>3</item>  

 

  1. <item>4</item>  
  2. /string-array>  

3. 在 src/com/android/BrowserSettings.java 中添加

public final static String PREF_USER_AGENT = "user_agent";  

4.在 src/com/android/BroserPreferencesPage.java 中添加

  1. private CharSequence getVisualUserAgent(String enumName){  
  2.                     CharSequence result = "";  
  3.                     CharSequence[] visualNames = getResources().getTextArray(  
  4.                             R.array.pref_user_agent_options);  
  5.                     CharSequence[] enumNames = getResources().getTextArray(  
  6.                             R.array.pref_user_agent_values);  
  7.   
  8.                     if(visualNames.length == enumNames.length){  
  9.                         for(int i=0; i<enumNames.length; i++){  
  10.                             if(enumNames[i].equals(enumName)){  
  11.                                 result = visualNames[i];  
  12.                                                                                                                         }  
  13.                                                                                             }  
  14.                     }  
  15.                     return result;  
  16.         }  

5. 在BroserPreferencesPage.java的OnCreate方法中添加

  1. e = findPreference(BrowserSettings.PREF_USER_AGENT);  
  2.     e.setOnPreferenceChangeListener(this);  
  3.     e.setSummary(getVisualUserAgent(  
  4.         getPreferenceScreen().getSharedPreferences()  
  5.         .getString(BrowserSettings.PREF_USER_AGENT, null))); 

6.在BroserPreferencesPage.java的onPreferenceChange 方法中添加

  1. else if (pref.getKey().equals(BrowserSettings.PREF_USER_AGENT)){  
  2.         pref.setSummary(getVisualUserAgent((String)objValue));  
  3.         return true;  
  4.     }  

相关内容