Android 平台中 Air 应用的调用

我们的 Air Mobile 项目要作为一个单独的模块被其他应用调用,查阅了一下 Adobe 官方帮助文档,其中提到可以使用自定义 URI 方案从网页或本机 Android 应用程序启动 AIR 应用程序。自定义 URI 支持依赖于 Android 清单中指定的方法滤镜,因此在其他平台上不能使用此技术。若要使用自定义 URI,请将方法滤镜添加到应用程序描述符的区块内。必须指定以下示例中的两个 intent-filter 元素,其中 customURI 可以指定为自定义字符串。

  <android>
      <manifestAdditions> 
          <![CDATA[ 
              <manifest> 
                  <application> 
                      <activity> 
                          <intent-filter> 
                              <action android:name="android.intent.action.MAIN"/> 
                              <category android:name="android.intent.category.LAUNCHER"/> 
                          </intent-filter> 
                          <intent-filter> 
                              <action android:name="android.intent.action.VIEW"/> 
                              <category android:name="android.intent.category.BROWSABLE"/> 
                              <category android:name="android.intent.category.DEFAULT"/> 
                              <data android:scheme="customURI "/> 
                          </intent-filter> 
                      </activity> 
                  </application> 
              </manifest> 
          ]]> 
      </manifestAdditions> 
  </android>   
  • 原生应用的调用代码:
String url = "customURI:param";
Uri uri = Uri.parse(url);
Intent _intent = new Intent(Intent.ACTION_VIEW, uri);
activity.startActivity(_intent);
  • 其他 Air 应用的调用代码:
navigateToURL(new URLRequest("customURI:param"));

其中 param 为传递给被调用者的参数,在被调用的Air应用中可以通过如下方法获取到参数:

NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE,onInvoke);
                                     
private function onInvoke(event:InvokeEvent):void
{
    trace(event.arguments);
}