如何在Adobe AIR中检测Android操作系统版本?

5
在iOS上,Adobe AIR的Capabilities.os可能是类似于“iPhone OS 5.1.1 iPad3,1”的形式 - 明确标识了操作系统版本以及设备型号。在Android上,它看起来更像是“Linux 2.6.35.7-59465-g42bad32”。维基百科列出了以下Android版本的Linux内核:
  • 2.6.29:1.6、2.0、2.1
  • 2.6.32:2.2x
  • 2.6.35:2.3x
  • 2.6.36:3.x
  • 3.0.1:4.0x
这些是否一成不变,或者有些系统会报告不同的Linux版本?
有没有更好的方法使用AIR和ActionScript确定Android操作系统版本?
对于我的目的,我需要区分4.0(冰激凌三明治)和4.1(果冻豆)版本。我认为4.1使用Linux内核3.1.10 - 有人能确认吗?

我怀疑这些是否绝对不变,但我认为大多数用户从收到设备以来可能都没有更改过它,我的猜测是即使运营商修改操作系统,他们也不会动内核(只是有教养的猜测)。另一个直觉是他们可能会切换操作系统或内核以保持与所选硬件的兼容性。 - shaunhusain
2
出于好奇,您为什么要确定它是4.0/4.1,难道没有公开的属性可以访问所需的功能吗?Adobe表示:“如果存在更具体的功能属性,则不要使用Capabilities.os来基于操作系统确定功能。基于操作系统的能力是一个坏主意,因为如果应用程序不考虑所有潜在的目标操作系统,它可能会导致问题。相反,使用对应于您正在测试的功能的属性。有关更多信息,请参阅Capabilities类描述。” - shaunhusain
AIR 3.3 中存在一个错误,这会导致文本仅在 4.1 版本中消失。解决方法比较丑陋,所以我只希望在必要时使用它。我同意通过操作系统来确定能力并不是一个好主意,但如果 AIR 在不同的操作系统中表现不同,我需要能够确定正在运行哪个操作系统。 - Sarah Northway
2个回答

3

1
rafaelfaria 最近在那个Starling论坛话题上发布了一个类,正好是我想要的。它使用了Funky Monkey build.prop解决方案适用于Android和最近的iOS设备。谢谢! - Sarah Northway

0

我可以确认,通过内核检测Android版本并不十分可靠。我试图区分4.0与早期的版本,尽管大多数ICS设备都有3.x的Linux内核,但一些升级后的平板电脑(例如Acer Iconia A500,在最初附带Android 3.0 Honeycomb时)在升级到Android 4.0 ICS后仍然具有2.x的Linux内核。所以我猜同样的情况可能会发生在升级到Jelly Bean的设备上。

我猜获得Android版本的一个可靠方法是创建一个Native Extension,调用本地Android API来获取该信息(参见:如何检查Android的系统版本?)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接