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