//<span style = "font-size:18px;"> </br>
public class MainActivity extends Activity</br>
{</br>
//</span><span style="font-size:12px;">预定义的action</span><span style="font-size:18px;"></br>
public static final String ACTION_PLUGIN = "com.intsig.mainApp.PLUGIN";</br>
@ Override</br>
public void onCreate(Bundle savedInstanceState)</br>
{</br>
super.onCreate(savedInstanceState);</br>
setContentView(R.layout.main);</br>
try</br>
{</br>
//</span><span style="font-size:12px;">查找符合这个action的所有activity即插件,若插件使用的是其他组件换成对应的方法</span><span style="font-size:18px;"></br>
List < ResolveInfo > infos = getPackageManager().queryIntentActivities(</br>
new Intent(ACTION_PLUGIN), PackageManager.MATCH_DEFAULT_ONLY);</br>
ActivityInfo pluginInfo;</br>
for (ResolveInfo info : infos)</br>
{</br>
< span style = "white-space:pre" > < / span > pluginInfo = info.activityInfo;</br>
//</span><span style="font-size:12px;">根据插件的安装路径获得ClassLoader</span><span style="font-size:18px;"></br>
ClassLoader cl = new PathClassLoader(pluginInfo.applicationInfo.sourceDir, getClassLoader());</br>
//</span><span style="font-size:12px;">获得插件类的实例</span><span style="font-size:18px;"></br>
MyInterface plugin = (MyInterface)cl.loadClass(pluginInfo.name).newInstance();</br>
plugin.test();</br>
}</br>
}</br>
catch (Exception e)</br>
{</br>
e.printStackTrace();</br>
}</br>
</br>
}</br>
}</br>
//</span></br>
public class MainActivity extends Activity</br>
{</br>
//</span><span style="font-size:12px;">预定义的action</span><span style="font-size:18px;"></br>
public static final String ACTION_PLUGIN = "com.intsig.mainApp.PLUGIN";</br>
@ Override</br>
public void onCreate(Bundle savedInstanceState)</br>
{</br>
super.onCreate(savedInstanceState);</br>
setContentView(R.layout.main);</br>
try</br>
{</br>
//</span><span style="font-size:12px;">查找符合这个action的所有activity即插件,若插件使用的是其他组件换成对应的方法</span><span style="font-size:18px;"></br>
List < ResolveInfo > infos = getPackageManager().queryIntentActivities(</br>
new Intent(ACTION_PLUGIN), PackageManager.MATCH_DEFAULT_ONLY);</br>
ActivityInfo pluginInfo;</br>
for (ResolveInfo info : infos)</br>
{</br>
< span style = "white-space:pre" > < / span > pluginInfo = info.activityInfo;</br>
//</span><span style="font-size:12px;">根据插件的安装路径获得ClassLoader</span><span style="font-size:18px;"></br>
ClassLoader cl = new PathClassLoader(pluginInfo.applicationInfo.sourceDir, getClassLoader());</br>
//</span><span style="font-size:12px;">获得插件类的实例</span><span style="font-size:18px;"></br>
MyInterface plugin = (MyInterface)cl.loadClass(pluginInfo.name).newInstance();</br>
plugin.test();</br>
}</br>
}</br>
catch (Exception e)</br>
{</br>
e.printStackTrace();</br>
}</br>
</br>
}</br>
}</br>
//</span></br>