在android的Browser中设置User Agent

默认的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 " ));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值