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内部组件调用:

Android显示调用App内部组件/第三方App内组件_第1张图片Android显示调用App内部组件/第三方App内组件_第2张图片

App组件间调用:

Android显示调用App内部组件/第三方App内组件_第3张图片Android显示调用App内部组件/第三方App内组件_第4张图片


更多相关文章

  1. 图片中的毕加索【Picasso】
  2. Android实现ListView异步加载图片
  3. Android ImageView实现上一页,下一页图片切换
  4. 安卓第三天---ViewPager控件实现滑动切换图片

随机推荐

  1. android studio实现微信登录
  2. android studio初体验
  3. android ContentProvider ApplyBatch
  4. 消息推送Android(安卓)sdk集成指南
  5. Android(安卓)一文学会无障碍服务(Accessi
  6. Android2.3 SDK以上编译出现Multiple sub
  7. 两个小时精通Android开发之数据持久存储
  8. application中 android:icon 和 android:
  9. Android(安卓)API Guides---Building Acc
  10. Android(安卓)一起来看看知乎开源的图片