ComponetName方式
以甲方App调用乙方App为例
甲方如下操作:
Intent intent = new Intent();
ComponentName componentName = new ComponentName(pkg, cls);// 参数pkg与cls
intent.setComponent(componentName);
context.startActivity(intent);
参数pkg、cls分别是乙方的包名与类名(包含package路径),其中需要对类配置如下:
android:exported="true"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
如此才能打开相应的类,并将参数传递到该类对象中。
URL Scheme方式
以甲方App调用乙方App为例
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("schemename://hostname:8080/releativepath?params=10011002"));
startActivity(intent);
同样,乙方的manifest文件中,要对响应类进行配置,如下:
<intent-filter>
<data android:scheme="schemename"
android:host="hostname"
android:path="/releativepath"
android:port="8080" />
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
以上参数要相互对应,比如scheme、host,
scheme是必须要写的,其他的host、path,可以省略不配置。
Scheme方式同样支持在网页上访问App,比如通过超链接的方式,具体如下:
<a href="schemename://hostname:8080/releativepath?params=123">打开什么呢?</a>