Как определить, работает ли приложение в качестве мобильного или настольного воздушного приложения? - PullRequest
3 голосов
/ 06 декабря 2011

Как узнать текущий тип приложения? т.е. работает ли он на мобильном устройстве или в качестве настольного приложения Air?

Я пробовал это:

if(FlexGlobals.topLevelApplicatoin as WindowedApplication)
 //desktop

Однако мобильная версия не может найти класс WindowedApplication.

Как мне отличить?

Ответы [ 7 ]

7 голосов
/ 16 декабря 2011

хорошо, это работает:

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()
}
2 голосов
/ 06 декабря 2011

Вы можете использовать Capabilities.OS ; однако примите во внимание это предупреждение от документов:

Не используйте Capabilities.os или Capabilities.manufacturer для определения возможность на основе операционной системы. Основываясь на возможности на операционная система - плохая идея, так как это может привести к проблемам, если Приложение не учитывает все потенциальные целевые операционные системы. Вместо этого используйте свойство, соответствующее возможности, для которой вы тестируете.

1 голос
/ 18 июля 2012

Если вам необходимо узнать, работаете ли вы на мобильном или настольном компьютере, вам следует проверить Capabilities.cpuArchitecture:

if (Capabilities.cpuArchitecture == "ARM") {

}

0 голосов
/ 03 августа 2016

Это класс, который я использую для определения, какая это ОС, и является ли она мобильной или нет, конечно, это касается только 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());
            }

        }
    }
}
0 голосов
/ 10 мая 2012

Этот тест будет работать из мобильного приложения без необходимости проверки конкретных имен ОС (например, 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)
    {
    }
}
0 голосов
/ 09 февраля 2012

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 голосов
/ 06 декабря 2011

Я не уверен, Но мы не можем преобразовать FlexGlobals.topLevelApplicatinn в WindowedApplication в мобильном приложении.

Итак, мобильные приложения могут быть следующих типов:

1.TabbedViewNavigatorApplication - для приложения навигации с вкладками View

2.viewnavigatorapplication - навигационное приложение на основе вида

Таким образом, в качестве типа приложения вы должны попробовать два варианта преобразования ....

...