如何找出当前的应用程序类型?即它是在移动设备上运行还是在桌面Air应用程序中运行?如何确定应用程序是作为移动或桌面空气应用程序运行的?
我已经试过这样:
if(FlexGlobals.topLevelApplicatoin as WindowedApplication)
//desktop
但是移动版本找不到WindowedApplication
类。
我该如何区分?
如何找出当前的应用程序类型?即它是在移动设备上运行还是在桌面Air应用程序中运行?如何确定应用程序是作为移动或桌面空气应用程序运行的?
我已经试过这样:
if(FlexGlobals.topLevelApplicatoin as WindowedApplication)
//desktop
但是移动版本找不到WindowedApplication
类。
我该如何区分?
确定此作品:
public static function isAndroid():Boolean
{
return (Capabilities.version.substr(0,3) == "AND");
}
public static function isIOS():Boolean
{
return (Capabilities.version.substr(0,3) == "IOS");
}
... //is Blackberry
public static function isMobile():Boolean
{
return (isAndroid() || isIOS()); // || isBlackberry()
}
您可以使用Capabilities.OS;但请注意文档中的警告:
请勿使用Capabilities.os或Capabilities.manufacturer来确定基于操作系统的 功能。基于 操作系统的功能是一个好主意,因为如果应用程序不考虑所有潜在的目标操作系统,它可能会导致问题。 而是使用与您正在测试的能力相对应的属性。
确定..但仅适用于设备......不是模拟器: -/ – Raegtime
是的,这是正确的。我想这会使测试变得困难。虽然我没有解决方案。很多问题w /模拟器。但是,提交一个增强请求,我会为它投票。 – JeffryHouser
我不确定, 但我们无法将FlexGlobals.topLevelApplicatinn转换为Mobile Application中的WindowedApplication。
因此,移动应用程序可以从以下几种类型:
1.TabbedViewNavigatorApplication - 标签式浏览导航中的应用
2.viewnavigatorapplication - 视图基于导航应用
所以作为你的应用程序类型,你应该尝试从上面两个选项进行转换....
这是不完整的。我制作了扩展应用程序的移动应用程序;实际上我认为这甚至是Flash Builder中的向导选项。 – JeffryHouser
C#功能检查IOS(的iPad,iPhone)
public bool isIOS()
{
HttpContext context = HttpContext.Current;
if (context.Request.ServerVariables["HTTP_USER_AGENT"] != null)
{
foreach (string s in new[] { "iPad", "iphone" })
{
if (context.Request.ServerVariables["HTTP_USER_AGENT"].ToLower().Contains(s.ToLower()))
{
return true;
}
}
}
return false;
}
使用接受的答案中显示的方法不是更好吗? –
最初的问题是关于AIR/AS3,而不是ASP.NET/C# – OMA
此测试将来自移动应用程序的工作,而无需测试特定的操作系统的名称(如Capabilities.os或Capabilities.version)。它在桌面上调试手机应用程序时,也一直工作的优势在哪里Capabilities.os可能不会给你答案,你想要的:
import flash.utils.getDefinitionByName;
...
var hasWindowedApp:Boolean = false;
try
{
hasWindowedApp = getDefinitionByName("spark.components.WindowedApplication") != null;
}
catch (error:ReferenceError)
{
}
if (!hasWindowedApp)
{
try
{
hasWindowedApp = getDefinitionByName("mx.core.WindowedApplication") != null;
}
catch (error:ReferenceError)
{
}
}
如果你需要知道你是否正在移动或桌面上运行你应该检查Capabilities.cpuArchitecture:
如果(Capabilities.cpuArchitecture ==“ARM”) {
}
这对于x86 x86 Android手机是否正常工作?像华硕ZenFone一样? – sydd
这是我使用的类确定哪个操作系统是它,如果它的移动或没有T,当然这仅涵盖Windows和Linux的Android和iOS:
package com.fw3dlogical.utils {
import flash.system.Capabilities;
/**
* Platform
* @author Juan Fernando Velez
*/
public class Platform {
public static function get isWin():Boolean {
return (Capabilities.version.indexOf("WIN") != -1);
}
public static function get isLinux():Boolean {
return (Capabilities.version.indexOf("LNX") != -1);
}
public static function get isAndroid():Boolean {
return (Capabilities.version.indexOf("AND") != -1);
}
public static function get isiOS():Boolean {
return (Capabilities.version.indexOf("IOS") != -1);
}
public static function isMobile():Boolean {
return (isAndroid() || isiOS());
}
}
}
}
public static function getBlackBerry():Boolean { return(Capabilities.version.substr(0,3)==“QNX”); } –
定义“将移动设备”定义为“Android”或“IO”是非常错误的。无论您添加到列表中的任何平台,该方法都是错误的。永远保留可能的移动平台列表是一个非常糟糕的主意 – FrancescoMM