Android系统中内置了浏览器应用/system/app/ Browser.apk,默认它生成User Agent 的策略如下:

以Android2.3为例,其 具体逻辑在:android.webkit.WebSettings.getCurrentUserAgent() 方法中。

Mozilla/5.0 (Linux; U; Android $(VERSION) ; $(LOCALE) ; $(MODEL) Build/$(BUILD) ) AppleWebKit/533.1 (KHTML, likeGecko) Version/4.0 Mobile Safari/533.1 

上面的$表达式会被求值,

VERSION:
android.os. Build.VERSION.RELEASE (ro.build.version.release)

MODEL :
android.os. Build.MODEL (ro.product.model);

BUILD:
android.os. Build.ID (ro.build.id) ;

LOCALE :当前设备中的语言设置,动态变化;
除Locale之外,其余几个都是Android系统属性,这些属性的初始值通常都定义在build\tools\buildinfo.sh文件中,要覆盖它们,需要向文件中添加新值。

但需要注意的是,一些以ro.开始的属性是只读属性 因此无法覆盖,修改其值 的 正确方法是,从源头,例如: ro.product.model 属性 在buildinfo.sh文件中的定义如下:
echo "ro.product.model=$PRODUCT_MODEL" 



那么,我们就需要找到PRODUCT_MODEL内部变量的定义,修改它,或者覆盖它。

针对 PRODUCT_MODEL变量而言,我们可以在 device\HW_X\P_XX\P_XX.mk文件中覆盖它,例如:
PRODUCT_MODEL := S41IA  

更多相关文章

  1. Android中彩信文件的读取
  2. Android 上传图片到服务器(多文件上传)
  3. Android 系统文件简介
  4. Android GridView 特殊属性
  5. Android 自定义RadioButton或CheckBox选择样式
  6. Android 保存数据到文件

随机推荐

  1. 自定义控件-进度条
  2. Android JSON 解析(一) JSONObject 和 JS
  3. Dialog自定义Style
  4. Android的系统服务一览 .
  5. ItemTouchHelper.Callback实现仿朋友圈发
  6. Android 继承DialogFragment弹出dialog对
  7. ViewGroup为什么不会调用onDraw
  8. android 7.1 开启WiFi热点
  9. android PackageInstaller那点事儿
  10. android listview 连续调用 getview问题