如何确定应用程序是作为移动或桌面空中应用程序运行?

时间:2011-12-06 17:23:14

标签: flash flex mobile air adobe

如何找出当前的应用类型?即它是在移动设备上运行还是作为桌面Air应用程序运行?

我试过这个:

if(FlexGlobals.topLevelApplicatoin as WindowedApplication)
 //desktop

但移动版无法找到WindowedApplication类。

我如何区分?

7 个答案:

答案 0 :(得分: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()
}

答案 1 :(得分:2)

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

  

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

答案 2 :(得分:1)

如果您需要知道自己是在移动设备还是桌面设备上运行,则应检查Capabilities.cpuArchitecture:

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

}

答案 3 :(得分:0)

我不确定, 但我们无法将FlexGlobals.topLevelApplicatinn转换为移动应用程序中的WindowedApplication。

因此,移动应用程序可以来自以下类型:

1.TabbedViewNavigatorApplication - 用于选项卡式视图导航应用程序

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

因此,作为您的应用程序类型,您应该尝试使用以上两个转换选项....

答案 4 :(得分: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)
    {
    }
}

答案 5 :(得分:0)

这是我用来确定哪个操作系统以及它是否为Mobile的类,当然这只包括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());
            }

        }
    }
}

答案 6 :(得分:-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;
    }