Android获取浏览器User Agent
16lz
2021-01-23
获取浏览器User Agent的代码:
[java] view plain copy
- WebView webview;
- webview = new WebView(this);
- webview.layout(0, 0, 0, 0);
- WebSettings settings = webview.getSettings();
- String ua = settings.getUserAgentString();
- Log.e("HJJ", "User Agent:" + ua);
[java] view plain copy
- public synchronized String getUserAgentString() {
- if (DESKTOP_USERAGENT.equals(mUserAgent) ||
- IPHONE_USERAGENT.equals(mUserAgent) ||
- !mUseDefaultUserAgent) {
- return mUserAgent;
- }
- boolean doPostSync = false;
- synchronized(sLockForLocaleSettings) {
- Locale currentLocale = Locale.getDefault();
- if (!sLocale.equals(currentLocale)) {
- sLocale = currentLocale;
- mUserAgent = getCurrentUserAgent();
- mAcceptLanguage = getCurrentAcceptLanguage();
- doPostSync = true;
- }
- }
- if (doPostSync) {
- postSync();
- }
- return mUserAgent;
- }
[java] view plain copy
- private synchronized String getCurrentUserAgent() {
- Locale locale;
- synchronized(sLockForLocaleSettings) {
- locale = sLocale;
- }
- StringBuffer buffer = new StringBuffer();
- // Add version
- final String version = Build.VERSION.RELEASE;
- if (version.length() > 0) {
- buffer.append(version);
- } else {
- // default to "1.0"
- buffer.append("1.0");
- }
- buffer.append("; ");
- final String language = locale.getLanguage();
- if (language != null) {
- buffer.append(language.toLowerCase());
- final String country = locale.getCountry();
- if (country != null) {
- buffer.append("-");
- buffer.append(country.toLowerCase());
- }
- } else {
- // default to "en"
- buffer.append("en");
- }
- // add the model for the release build
- if ("REL".equals(Build.VERSION.CODENAME)) {
- final String model = Build.MODEL;
- if (model.length() > 0) {
- buffer.append("; ");
- buffer.append(model);
- }
- }
- final String id = Build.ID;
- if (id.length() > 0) {
- buffer.append(" Build/");
- buffer.append(id);
- }
- final String base = mContext.getResources().getText(
- com.android.internal.R.string.web_user_agent).toString();
- return String.format(base, buffer);
- }
如我获取到自己手机的UA如下:
[html] view plain copy
- Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; U8817 Build/MocorDroid4.0.3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
显然它是这样组成的:
首先,web_user_agent的代码为:
[java] view plain copy- Mozilla/5.0 (Linux; U; Android %s) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
其中%s为构造的buffer。
对应如下:
4.0.3 Build.VERSION.RELEASE
U8817 如果Build.VERSION.CODENAME.equal("REL"),哪么值为Build.MODEL
MocorDroid4.0.3 值为Build.ID
更多相关文章
- android 100行代码实现 仿苹果滑动选择器WheelView
- Android之图文混排 (二)源代码
- 一段Android实现应用下载并自动安装apk包的代码
- 36个Android开发常用代码片段
- Android 进阶的小技巧整理(整理自第一行代码)
- Android 通过代码设置着色图片
- android典型代码系列(五)------deviceadmin步骤
- 用代码如何检测一个android程序是否在运行