如何确定当前应用程序的类型?即它是在移动设备上运行还是作为桌面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.manufacturer来基于操作系统确定能力。基于操作系统的能力是一个坏的想法,因为如果一个应用程序没有考虑到所有可能的目标操作系统,就会导致问题。相反,请使用与您正在测试的能力相对应的属性。
这是我用来确定操作系统及其是否为移动设备的类。当然,这只涵盖了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());
}
}
}
}
如果您需要知道您正在使用移动设备还是桌面设备,您应该检查 Capabilities.cpuArchitecture:
if(Capabilities.cpuArchitecture=="ARM")
{
}
这个测试可以在移动应用程序中工作,而不需要测试特定的操作系统名称(如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)
{
}
}
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;
}