探究Android中浏览器UA的生成策略

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, like
Gecko) 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文件中,要覆盖它们,需要向device\HW_X\P_XX\system.prop文件中添加新值。

但需要注意的是,一些以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. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. 读取android手机流量信息
  4. android 使用html5作布局文件: webview跟javascript交互
  5. Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces
  6. android“设置”里的版本号
  7. Android开发环境搭建
  8. Android(安卓)Resource介绍和使用
  9. 2014.01.21 ——— android 关联android-support源码

随机推荐

  1. 2018-03-08(Android四大启动模式)
  2. android应用中调用系统相应用汇总
  3. android组建属性及使用许可
  4. Netty多语言(Java、Android 、C#、WebSock
  5. 去除或替换listview 默认的点击选中时的
  6. Android 中使用OpenGL ES进行2D开发(GLSur
  7. FFmpeg在Android上的移植之第一步
  8. android 判断EditText中输入的值是数字、
  9. Android WebView详解(二):Android原生与JS互
  10. Android开发实践教程