如何确定应用程序是作为移动应用程序运行还是作为桌面AIR应用程序运行?

gg58donl  于 2022-09-21  发布在  Apache
关注(0)|答案(7)|浏览(185)

我如何才能知道当前的应用程序类型是什么?也就是说,它是在移动设备上运行还是作为桌面Air应用程序运行?

我试过这个:

if(FlexGlobals.topLevelApplicatoin as WindowedApplication)
 //desktop

然而,手机版找不到WindowedApplication类。

我该如何区分呢?

8yparm6h

8yparm6h1#

好的,这行得通:

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()
}
ugmeyewa

ugmeyewa2#

您可以使用Capabilities.OS;但是,请注意文档中的以下警告:
不要使用Capabilities.os或Capabilitis.aker来确定基于操作系统的功能。将功能建立在操作系统之上不是一个好主意,因为如果应用程序不考虑所有潜在的目标操作系统,这可能会导致问题。相反,请使用与您要测试的功能对应的属性。

6vl6ewon

6vl6ewon3#

这是我用来判断是哪种操作系统以及是不是移动版的类,当然这只适用于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());
            }

        }
    }
}
tzcvj98z

tzcvj98z4#

如果您需要知道您是在移动设备上运行还是在台式机上运行,您应该检查Capabilities.cpuArchitecture:

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

}
0h4hbjxa

0h4hbjxa5#

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

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

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

2.视图导航器应用-基于视图的导航应用

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

zpjtge22

zpjtge226#

这项测试将在移动应用程序上进行,不需要测试特定的操作系统名称(如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)
    {
    }
}
vbkedwbf

vbkedwbf7#

检查iOS(iPad、iPhone)的C#函数

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

相关问题