隨筆雜記

             :: 首頁 :: 新隨筆 ::  ::  :: 管理 ::

          默認的Android的Browser中無法設置User Agent,但是在Browser的源碼中可以看到,android提供了4中User Agent 具體代碼如下:

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

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



          提供了4中不同的User Agent,但是在瀏覽器中無法進行設置。


          在Browser的setting中添加設置User Agent的選項:

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

          <ListPreference
                          
          android:key="user_agent"
                          android:title
          ="@string/pref_user_agent"
                          android:defaultValue
          ="0"
                          android:entries
          ="@array/pref_development_ua_choices"
                          android:entryValues
          ="@array/pref_development_ua_values"
                          android:dialogTitle
          ="@string/pref_user_agent_dialogtitle" />


          2.在res/value/string.xml中添加對應的字符串,多語言的具體到不同的文件夾(自己添加)

          <string name="pref_user_agent">User agent</string>  
            
           
          <string name="pref_user_agent_dialogtitle"  translatable="false">User Agent</string>  
          <string-array name="pref_development_ua_choices" translatable="false">
                  
          <item>Android</item>
                  
          <item>Desktop</item>
                  
          <item>iPhone</item>
                  
          <item>iPad</item>
                  
          <item>Froyo-N1</item>
                  
          <item>NexusOne</item>
                  
          <item>Samsung i9000</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>
                  
          <item>3</item>
                  
          <item>4</item>
                  
          <item>5</item>
                  
          <item>6</item>
              
          </string-array>

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

          1. public final static String PREF_USER_AGENT = "user_agent";  

          4.在 src/com/android/BroserPreferencesPage.java 中添加
          private CharSequence getVisualUserAgent(String enumName) {
                  CharSequence result 
          = "";
                  CharSequence[] visualNames 
          = getResources().getTextArray(
                          R.array.pref_development_ua_choices);
                  CharSequence[] enumNames 
          = getResources().getTextArray(R.array.pref_development_ua_values);

                  
          if (visualNames.length == enumNames.length) {
                      
          for (int i = 0; i < enumNames.length; i++{
                          
          if (enumNames[i].equals(enumName)) {
                              result 
          = visualNames[i];
                          }

                      }

                  }

                  
          return result;
              }


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

          = findPreference(BrowserSettings.PREF_USER_AGENT);  
              e.setOnPreferenceChangeListener(
          this);  
              e.setSummary(getVisualUserAgent(  
                  getPreferenceScreen().getSharedPreferences()  
                  .getString(BrowserSettings.PREF_USER_AGENT, 
          null))); 
           
          6.在BroserPreferencesPage.java的onPreferenceChange 方法中添加


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

               
                7.在BrowserSettings.java的syncSharedPreferences方法中添加

          userAgent = Integer.parseInt(p.getString(PREF_USER_AGENT, "0"));


           

          posted on 2011-10-18 12:51 天宇恒星 閱讀(4040) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 嘉义县| 大田县| 新乐市| 呼伦贝尔市| 都昌县| 托克逊县| 曲靖市| 永兴县| 综艺| 塘沽区| 龙海市| 丹江口市| 景泰县| 仪征市| 始兴县| 蕉岭县| 云南省| 宜兰市| 思茅市| 铜梁县| 淮北市| 凤阳县| 衢州市| 固镇县| 湾仔区| 岳池县| 桦甸市| 迭部县| 高密市| 武山县| 湖北省| 唐山市| 新泰市| 屏边| 南通市| 花垣县| 通渭县| 宁城县| 休宁县| 禹城市| 临湘市|