* 何为自定义协议
浏览器嘛,最重要的就是对HTTP协议的解析支持,http开头的即是。
但是也有其他协议浏览器可以进行支持,例如IE浏览器支持ftp协议。还有Chrome浏览器的设置界面chrome://等。
chromium本身就支持二次开发人员扩展自己的自定义协议,示例代码中就加入了两种自定义协议,search://和client://。
示例代码中,输入client://路径会打开一些本地资源文件,我们不介绍这个,大家可以看看。而输入search://接关键字会打开google搜索,我们着重介绍这个自定义协议,因为这里面涉及一个PunyCode/IDN的问题。
* 从search://看自定义协议
示例代码中search://后面的关键字会放到google中搜索,由于大陆访问不了google,我们使用baidu搜索。
类tests.detailed.handler.SearchSchemeHandler中38行处。
newUrl = "http://www.baidu.com/s?wd=" + newUrl;
1. 说在前面
虽然我没有把注册、拦截自定义协议的详细步骤写出来,但示例代码中体现地很完整。
首先重载org.cef.handler.CefAppHandlerAdapter.onRegisterCustomSchemes函数使用org.cef.callback.CefSchemeRegistrar.addCustomScheme注册协议名称;然后重载org.cef.handler.CefAppHandlerAdapter.onContextInitialized函数为协议注册工厂类;示例代码中从类tests.detailed.handler.