实现用户自定义Provider功能