Android与WebView的插件管理机制

本文探讨Android中WebView的插件管理,介绍PluginManager如何处理HTML页面请求,并通过plugin.xml配置加载插件。插件机制允许按需加载原生功能如Toast,保持应用一致性。在JavaScript中,通过定义相应对象和方法调用Android原生环境的Plugin。
摘要由CSDN通过智能技术生成

上一篇文章说到,当利用WebViewClient或者WebChromeClient来处理由html页面传过来的请求的时候,都会将对应的服务名称,操作方法和对应的参数数据传给一个叫PluginManager的类。

PluginManager类的作用是什么?

大家知道,当利用Android原生环境的功能,比如照像机,比如相册等,这些功能都是很分散的,说不清楚什么时候是需要这些功能,什么时候是不需要这些功能的,所以我们希望能够像插件一样,需要的时候就加载进来,不需要的时候不去理他,而PluginManager类就是一个这样的管理类。

它主要负责几件事情:

1)进入HTML页面的时候,去加载我们定义好的控件。

mPluginManager = new PluginManager(this);
mPluginManager.loadPlugin();

那么PluginManager怎么知道本个应用要加载多少plugin来去响应由Html页面来的请求呢?

我们是通过一个叫plugin.xml配置文件来定义的。

<plugins>
    <plugin name="App" class="com.lms.xxx.bridge.plugin.App" />
    <plugin name="Toast" class="com.lms.xxx.plugin.Toast" />
    <plugin name="Dialog" class="com.lms.xxx.bridge.plugin.Dialog" />   
    <plugin name="User" class="com.lms.xxx.bridge.plugin.User" />
</plugins>


比如在上面的配置文件中,我们会加载App, Toast, Dialog 和 User 这几个plugin。

可以联想到,Toast和Dialog都是Android原生环境下的显示窗口,我们虽然用html页面来实现界面,但是为了保持整个应用的一致性,我们就会用到原生环境中的Toast或者我们自定义的对话框等控件。

需要用到什么,就在这里定义什么。

我们再来看一下loadPlugin方法:

	public void loadPlugin() {
		int identifier = context.getResources().getIdentifier("plugins", "xml",
				context.getPackageName());
		if (identifier == 0) {
			pluginConfigurationMissing();
		}

		XmlResourceParser xml = context.getResources().getXml(identifier);
		try {

			int eventType = -1;
			while ((eventType = xml.next()) != XmlResourcePar
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值