先说原理:安卓和iOS实现多个app应用之间相互调用的原理是一样的,都是通过在安装app时在系统注册一个类似url的地址,代表app的地址(每个app都有,且都可以自定义),通过访问这个地址就可以启动这个应用,并且和http协议中的url类似,可以再地址后面加上自定义参数,传递给被调用的app
实现方法:
iOS:
1. 现在info.plist中添加一个新的选项 URL types 加一个item ,在item中加一个URL Schemes 加一个item(例如value可以填myAppScheme),如下图
2 .然后在工程的info页 URL Types应该自己改下,identifier和URL Schemes例如可以填myAppScheme
完成1,2步时就可以通过在Safari浏览器地址栏中输入myAppScheme://来调用自己的app了
3. 在AppController类中这个方法:(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options
这个方法是应用被其他应用调用时调用时响应的,可以在这里看到url,url里的参数,典型的url如:myAppScheme://test/123
myScheme后面的参数可以有,也可以没有,如果有参数,拿到url就可以处理其中的参数了;如果没有参数myAppScheme://,那就仅仅是该应用被启动,没有其他的了
Android:
1.和iOS中info.plist中类似,在manifest.xml 中的主activity中的intent-filter中添加一个新的intent-filter如下
intent-filter
action android:name="android.intent.action.VIEW"
category android:name="android.intent.category.BROWSABLE
data android:scheme="myAppScheme"
intent-filter
完成第1步就可以通过在安卓浏览器地址栏中输入myAppScheme://来调用自己的app了
2.在activity中设计到activity传递intent的地方就可以收到启动app地址后面传递过来相关的信息了,和iOS的AppController类中的上面的那个方法类似
Intent intent = getIntent();