使用插件中的四大组件

使用插件的四大组件是对插件的常用功能,其中对于广播组件,按常规使用即可,无其他要求;provider组件需要在宿主配置代理标签;activity和service组件有两种使用方式,代理方式和穿透方式。下面分别详细介绍。

一 、activity

使用activity组件有两种方式:代理方式和穿透方式

1 代理方式

在宿主manifest中配置插件组件的代理标签,这一个标签可以代理插件的所有activity

<activity android:name="org.apkplug.app.apkplugActivity"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        android:configChanges="orientation|keyboardHidden">

        <intent-filter>
            <action android:name="android.intent.action.MAIN"></action>
        </intent-filter>

    </activity>

在启动插件组件时直接在Intent中设置类名来启动。如下:

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

2 穿透方式:

即直接把插件的Activity标签配置在宿主manifest中,而不使用代理标签,但插件plugin.xml中Bundle-Service属性中也需要配置该Activity路径,否则会出现找不到这个Activity类的异常

二、servic

使用service组件有两种方式:代理方式和穿透方式

1 代理方式

在宿主manifest中配置插件组件的代理标签,这一个标签可以代理插件的所有service

    <service android:name="org.apkplug.app.apkplugService"/>

在使用组件时可以直接使用,就跟是宿主的service一样。

2 穿透方式:

即直接把插件的service标签配置在宿主manifest中,而不使用代理标签,但插件plugin.xml中Bundle-Service属性中也需要配置该service路径,否则会出现找不到这个service类的异常

三、广播组件

无需特殊处理

四、provider

provider组件只能使用代理方式

在宿主manifest中配置如下标签,xxx为宿主包名

使用亦和宿主中的provider一样。

总结: 大部分情况代理模式就可以满足要求,但也有必须要在宿主配置Activity的情况 例如微信支付,分享回调Activity