支持鸿蒙设备 UA 解析(pr#1301@Gitee)

This commit is contained in:
Looly 2025-01-24 16:17:35 +08:00
parent 1b468245c5
commit b7b5fbea71
3 changed files with 70 additions and 44 deletions

View File

@ -52,6 +52,7 @@ public class OS extends UserAgentInfo {
new OS("Windows", "windows"), // new OS("Windows", "windows"), //
new OS("OSX", "os x (\\d+)[._](\\d+)", "os x (\\d+([._]\\d+)*)"), // new OS("OSX", "os x (\\d+)[._](\\d+)", "os x (\\d+([._]\\d+)*)"), //
new OS("Android", "Android", "Android (\\d+([._]\\d+)*)"),// new OS("Android", "Android", "Android (\\d+([._]\\d+)*)"),//
new OS("Harmony", "OpenHarmony", "OpenHarmony (\\d+([._]\\d+)*)"), //
new OS("Android", "XiaoMi|MI\\s+", "\\(X(\\d+([._]\\d+)*)"),// new OS("Android", "XiaoMi|MI\\s+", "\\(X(\\d+([._]\\d+)*)"),//
new OS("Linux", "linux"), // new OS("Linux", "linux"), //
new OS("Wii", "wii", "wii libnup/(\\d+([._]\\d+)*)"), // new OS("Wii", "wii", "wii libnup/(\\d+([._]\\d+)*)"), //

View File

@ -52,6 +52,10 @@ public class Platform extends UserAgentInfo {
* android * android
*/ */
public static final Platform ANDROID = new Platform("Android", "android"); public static final Platform ANDROID = new Platform("Android", "android");
/**
* harmony
*/
public static final Platform HARMONY = new Platform("Harmony", "OpenHarmony");
/** /**
* android * android
*/ */
@ -72,6 +76,7 @@ public class Platform extends UserAgentInfo {
IPHONE, // IPHONE, //
new Platform("Android", "XiaoMi|MI\\s+"), // new Platform("Android", "XiaoMi|MI\\s+"), //
ANDROID, // ANDROID, //
HARMONY, //
GOOGLE_TV, // GOOGLE_TV, //
new Platform("htcFlyer", "htc_flyer"), // new Platform("htcFlyer", "htc_flyer"), //
new Platform("Symbian", "symbian(os)?"), // new Platform("Symbian", "symbian(os)?"), //
@ -160,4 +165,13 @@ public class Platform extends UserAgentInfo {
return this.equals(ANDROID) || this.equals(GOOGLE_TV); return this.equals(ANDROID) || this.equals(GOOGLE_TV);
} }
/**
* 是否为Harmony平台
*
* @return 是否为Harmony平台
*/
public boolean isHarmony() {
return this.equals(HARMONY);
}
} }

View File

@ -505,4 +505,15 @@ public class UserAgentUtilTest {
assertEquals("Mac", ua.getPlatform().toString()); assertEquals("Mac", ua.getPlatform().toString());
assertFalse(ua.isMobile()); assertFalse(ua.isMobile());
} }
@Test
public void parseHarmonyUATest() {
final String uaStr = "Mozilla/5.0 (Phone; OpenHarmony 4.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile ";
final UserAgent ua = UserAgentUtil.parse(uaStr);
assertEquals("Harmony", ua.getPlatform().toString());
assertTrue(ua.getPlatform().isHarmony());
assertEquals("Harmony", ua.getOs().toString());
assertEquals("4.1", ua.getOsVersion());
assertTrue(ua.isMobile());
}
} }