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 Tether 分析
  2. Android(安卓)对话框【Dialog】去除白色边框代码
  3. Android(安卓)application 和 activity 标签详解
  4. Android(安卓)上传图片到服务器(多文件上传)
  5. Android中彩信文件的读取
  6. Activity属性设置大全
  7. android NDK/JNI-实例开发流程
  8. Android(安卓)SDK目录结构和工具介绍
  9. NPM 和webpack 的基础使用

随机推荐

  1. android(3)(android五大布局)
  2. Android gradle测试
  3. 分页控件1
  4. Android(安卓)Fragment嵌套导致的bug
  5. Android常用代码
  6. Android拷贝图片到指定文件路径
  7. android 安卓创建文件夹
  8. Android自动补全(二)
  9. android重新启动应用程序和重新启动系统
  10. android activity 单元测试总结