As3 AIR如何检查设备是否支持tel?

时间:2013-12-08 18:24:01

标签: actionscript-3 flash air tel

我正在制作as3 AIR应用。我想把电话号码放在应用程序中。在iPhone上,当用户点击“电话号码”按钮时,它会调用tel,类似于:

str = "tel:1-415-555-1212"; 
var urlReq:URLReq = new URLRequest(str); 
navigateToURL(urlReq);

这会将电话号码放在用户本机拨号程序中(在iOS上它实际上为您拨打并发送)。但是,在iPad上它没有任何作用。我想首先检查tel是否受支持。如果是,请正常进行。如果不是,请显示带有电话号码的弹出窗口。对于Android手机和平板电脑,我想做的几乎完全一样。

1 个答案:

答案 0 :(得分:1)

据我所知,单凭AIR无法做到这一点。在Objective-C中,您可以使用名为canOpenURL的方法执行此操作。相当微不足道。没有AIR等价物。

所以你有两个选择:

  1. 创建/查找可以访问此内容的ANE。我认为distriqt提供了一个能做到这一点的人,尽管它们并不便宜。然而,这将是一个相当容易创建的,所以它可能值得你自己做。
  2. 您创建了一种可以区分iPad和iPhone的方法。您可以通过多种方式执行此操作(另请参阅另一个问题)。但是,我不推荐这种方法。这依赖于iPad无法拨打电话。存在这样的应用程序,允许您通过tel URI执行此操作。鉴于Apple的一般做法,这是不可能的,但可能。
  3. 编辑:我昨天自己最终需要这个功能,所以我找了一个提供功能的ANE。非常感谢StickSports发布他们所有的ANE。 https://github.com/StickSports/ANE-Can-Open-URL

    使用示例:

    public static function shareTwitter( url:String, message:String = null ):void {
        var msg:String = ( message ? message : "" ) + " " + url;
        var nurl:String = "twitter://post?message=" + msg;
        var web:String = "https://twitter.com/intent/tweet?text=" + message + "&url=" + url;
    
        if ( CanOpenUrl.canOpen( nurl ) ) {
            navigateToURL( new URLRequest( nurl ) );
        }
        else {
            navigateToURL( new URLRequest( web ) );
        }
    }