Android显示调用App内部组件/第三方App内组件
  • Android提供显示调用的方法有四种API,分别是:
setClass(Context packageContext,Class<?> cls)
setClassName(Context packageName,String className)
setClassName(String packageName,String className)
setComponent(ComponentName component)

setClass/setClassName:
参数1:被调用组件所在包的Context/包名
参数2:被调用的组件Class/className
setComponent:
参数:被调用的组件

  • 以下实例将使用上述四种API分别展示:
App A中的MainActivity调用SecondActivity
App A中的MainActivity调用App B中的MainActivity
其中:
App A:
com.example.zzz_a.MainActivity
com.example.zzz_a.SecondActivity
App B:

com.example.zzz_b.MainActivity

  • 代码展示:
setClass(Context packageContext,Class<?> cls)

i. App内部调用:

Intent intent = new Intent();intent.setClass(getApplicationContext(), SecondActivity.class);startActivity(intent);

setClassName(Context packageContext,String className)

i. App内部调用

Intent intent = new Intent();intent.setClassName(getApplicationContext(), "com.example.zzz_a.SecondActivity");startActivity(intent);

ii. App间调用

Intent intent = new Intent();//获取com.example.zzz_b的ContextContext context = createPackageContext("com.example.zzz_b", CONTEXT_IGNORE_SECURITY|CONTEXT_INCLUDE_CODE);intent.setClassName(context, "com.example.zzz_b.MainActivity");startActivity(intent);


setClassName(String packageName,String className)

i. App内部调用:

Intent intent = new Intent();intent.setClassName("com.example.zzz_a", "com.example.zzz_a.SecondActivity");startActivity(intent);

ii. App间调用:

Intent intent = new Intent();intent.setClassName("com.example.zzz_b", "com.example.zzz_b.MainActivity");startActivity(intent);

setComponent(ComponentName component)
ComponentName对象的实例化有四种方法,分别是:
new ComponentName(parcel);
new ComponentName(Context,Class<?>);
new ComponentName(Context,String);
new ComponentName(String,String);

i. App内部调用:

Intent intent = new Intent();ComponentName component = new ComponentName("com.example.zzz_a ", "com.example.zzz_a.SecibdActivity");intent.setComponent(component);startActivity(intent);

ii. App间调用

Intent intent = new Intent();ComponentName component = new ComponentName("com.example.zzz_b", "com.example.zzz_b.MainActivity");intent.setComponent(component);startActivity(intent);

或者:

Intent intent = new Intent();Context context = createPackageContext("com.example.zzz_b", CONTEXT_IGNORE_SECURITY|CONTEXT_INCLUDE_CODE);ComponentName component = new ComponentName(context, "com.example.zzz_b.MainActivity");intent.setComponent(component);startActivity(intent);
……

上述代码片段就是四种API分别用于App内部/App间的组件调用的具体实现。

注:被调用的第三方App组件在manifest中的exposed属性值必须为true,否则调用会出错。


  • 实验结果:

App内部组件调用:

App组件间调用:


更多相关文章

  1. Android与unity交互
  2. Android的IPC机制Binder的详解汇总
  3. Android概述
  4. Android下so注入汇总
  5. AndroidMenifest.xml中android:sharedUserId="android.uid.syste
  6. Ted Mosby - 一个MVP框架的软件架构
  7. 详解 Android(安卓)的 Activity 组件
  8. Android(安卓)GPS架构分析
  9. Android应用开发提高系列(5)——Android动态加载(下)——加载已安装A

随机推荐

  1. ButterKnife 8.4添加使用
  2. Android(安卓)Dialog和AlertDialog的一些
  3. android SeekBar双滑块
  4. RxJava 链式调用流程源码记录分析(以map()
  5. Android之监听View的两个指头是放大和缩
  6. Spatialite for Android编译及测试
  7. IIS 添加mime 支持 apk,exe,.woff,IIS MIM
  8. Android(安卓)SDK——Android(安卓)Studi
  9. Android(安卓)开发笔记之界面开发
  10. Android(安卓)API Demos学习 - Service部