0

我正在制作一个 as3 AIR 应用程序。我想在应用程序中输入电话号码。在 iPhone 上,当用户单击“电话号码”按钮时,它会调用 tel,如下所示:

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

这会将电话号码放在用户的本地拨号器中(在 iOS 上,它实际上会为您拨号并发送)。但是,在 iPad 上它什么也不做。我想首先检查是否支持电话。如果是,请正常执行。如果不是,则显示带有电话号码的弹出窗口。我也想对安卓手机和平板电脑做同样的事情。

4

1 回答 1

1

据我所知,仅在 AIR 中无法做到这一点。在 Objective-C 中,您可以使用名为canOpenURL. 相当琐碎。没有 AIR 等价物。

所以你有两个选择:

  1. 创建/找到一个可以访问它的 ANE。我认为 distriqt 提供了一个可以做到的,虽然它们并不便宜。不过,这将是一个相当容易创建的项目,因此可能值得您自己做。
  2. 您创建了一种可以区分 iPad 和 iPhone 的方法。您可以通过多种方式执行此操作(另一个问题的主题)。但是,我不推荐这种方法。这依赖于 iPad 无法拨打电话。有可能存在这样的应用程序,它允许您通过telURI 执行此操作。鉴于 Apple 的一般做法,这不太可能,但有可能。

编辑:我昨天自己最终需要这个功能,所以我找到了一个提供该功能的 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 ) );
    }
}
于 2013-12-09T16:08:09.807 回答