通过外部APP打开AIR流程记录
通常我们可能会通过其他的应用打开需要打开的应用。以前考虑到可以用ANE来解决这个问题。但是其实AIR自身是提供这个功能的。不仅仅可以通过AIR打开其他的APP 还可以通过其他APP打开自身 以及通过网页链接打开自己。
通过ANE来打开如 安卓
//如果配置了不显示air前缀 那么就不需要加 String appPackage = "air.com.xx.myapp"; String appID = "air.com.xx.myapp.AppEntry"; Intent myIntent = new Intent(); myIntent.addCategory(Intent.CATEGORY_LAUNCHER); myIntent.setAction(Intent.ACTION_MAIN); myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); myIntent.setData(Uri.parse("name=xmk&psd=123")); myIntent.setClassName(appPackage, appID); MainActivity.this.startActivity(myIntent);
对于AIR打开其他的APP 以及网页链接打开自己 就需要配置一下了
安卓:
<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"/> <!--myapp是自定义的字符串--> <data android:scheme="myapp"/> </intent-filter> </activity> </application>
上面的两个Itent 必须加上 本打算精简一下 然而打包的时候 会报错
另外不需要配置也能打开的 点击这里
苹果:
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <!--和安卓一样myapp是自定义的字符串--> <string>myapp</string> </array> <key>CFBundleURLName</key> <!--此处的就是我们填写在ID标签里面的东西 不需要加上air前缀--> <string>com.xx.myapp</string> </dict> </array>
通过上面的方式配置好后就可以写代码了
不带参数 air内 as3实现。
navigateToURL( new URLRequest("myapp://"));
网页实现
<a href="myapp://">打开app</a>
可以看出 只要使用能够打开url的api 就可以实现这种功能了。
带参数
navigateToURL( new URLRequest("myapp://name=xm&psd=123"));
即在//后面添加的字符串 就是我们传递给app的参数,比如点击网页直接打开app登录。
但是问题来了,air怎样能够获取到参数呢? 不卖关子,同样adobe提供了方法
监听事件InvokeEvent.INVOKE
private function onGetOtherAppInfoHandler( e:InvokeEvent ):void { trace( e.arguments );//此处的arguments就是包含了我们传过来的参数 name=xm&psd=123 同时还有其他的数据。 } NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE,onGetOtherAppInfoHandler );
注:上述获取参数的方式同样适合于通过原生的方式打开并传参