2011-12-06 18 views

回答

7

确定此作品:

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() 
} 
+0

public static function getBlackBerry():Boolean { return(Capabilities.version.substr(0,3)==“QNX”); } –

+1

定义“将移动设备”定义为“Android”或“IO”是非常错误的。无论您添加到列表中的任何平台,该方法都是错误的。永远保留可能的移动平台列表是一个非常糟糕的主意 – FrancescoMM

2

您可以使用Capabilities.OS;但请注意文档中的警告:

请勿使用Capabilities.os或Capabilities.manufacturer来确定基于操作系统的 功能。基于 操作系统的功能是一个好主意,因为如果应用程序不考虑所有潜在的目标操作系统,它可能会导致问题。 而是使用与您正在测试的能力相对应的属性。

+0

确定..但仅适用于设备......不是模拟器: -/ – Raegtime

+0

是的,这是正确的。我想这会使测试变得困难。虽然我没有解决方案。很多问题w /模拟器。但是,提交一个增强请求,我会为它投票。 – JeffryHouser

0

我不确定, 但我们无法将FlexGlobals.topLevelApplicatinn转换为Mobile Application中的WindowedApplication。

因此,移动应用程序可以从以下几种类型:

1.TabbedViewNavigatorApplication - 标签式浏览导航中的应用

2.viewnavigatorapplication - 视图基于导航应用

所以作为你的应用程序类型,你应该尝试从上面两个选项进行转换....

+0

这是不完整的。我制作了扩展应用程序的移动应用程序;实际上我认为这甚至是Flash Builder中的向导选项。 – JeffryHouser

-2

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; 
    } 
+0

使用接受的答案中显示的方法不是更好吗? –

+0

最初的问题是关于AIR/AS3,而不是ASP.NET/C# – OMA

0

此测试将来自移动应用程序的工作,而无需测试特定的操作系统的名称(如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) 
    { 
    } 
} 
1

如果你需要知道你是否正在移动或桌面上运行你应该检查Capabilities.cpuArchitecture:

如果(Capabilities.cpuArchitecture ==“ARM”) {

}

+0

这对于x86 x86 Android手机是否正常工作?像华硕ZenFone一样? – sydd

0

这是我使用的类确定哪个操作系统是它,如果它的移动或没有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()); 
      } 

     } 
    } 
} 
相关问题