# WMPFClientProvider

需 WMPF >= 2.2.0 支持。

封装小程序与移动应用通信的接口。

# AndroidManifest.xml 配置

<application>
    <provider
        android:name="ClientProvider"
        android:authorities="com.tencent.wmpf.cli.provider"
        android:enabled="true"
        android:exported="true"
        tools:ignore="ExportedContentProvider" />

</application>

# 示例代码

public class ClientProvider extends WMPFClientProvider implements WMPFClientProvider.InvokeChannelDelegate, WMPFClientProvider.DeviceActivatedDelegate {
    {
        setDeviceActivatedDelegate(this);
        setInvokeChannelDelegate(this);
    }

    @Override
    public boolean onCreate() {
        return true; // 直接返回 true 即可。
    }

    @Override
    public void onDeviceActivated() {
        // WMPF 通知设备已经激活成功,一般仅车机自主激活时需要使用,开发者主动调用 activateDevice 的场景可忽略。
    }

    /**
     * 小程序内调用 wmpf.Channel.registerEvent 函数时会调用本函数。
     * 事件注册后,可以通过 WMPFClientProvider.notifyInvokeChannelEvent 通知小程序事件。
     * 开发者应对 event 和 eventId 的关系进行持久化存储,以保证应用重启后依然可以向小程序正常发送事件。
     * @param event 事件名称
     * @param eventId 事件 id ,作为后续通知回调的凭据
     */
    @Override
    public void registerEvent(String event, String eventId) {
    }

    /**
     * 小程序内调用 wmpf.Channel.unregisterEvent 函数时会调用本函数。
     * @param event 事件名称
     * @param eventId 事件 id
     */ 
    @Override
    public void unregisterEvent(String event, String eventId) {
    }

    /**
     * 小程序中调用 wmpf.Channel.invoke 函数时会调用本函数。
     * @param method 小程序传入的指令名 (command)
     * @param args 小程序传入的指令参数 (data)
     * @param callback 向小程序返回结果的 callback
     */
    @Override
    public void invoke(String method, String args, ExceptionalConsumer<String, ? extends Exception> callback) {
        // 处理指令....
        callback.consume("{\"errCode\": 0}");
    }

    /**
     * 小程序中调用 wmpf.Channel.invokeSync 函数时会调用本函数。
     * @param method 小程序传入的指令名 (command)
     * @param args 小程序传入的指令参数 (data)
     */
    @Override
    public String invokeSync(String method, String args) {
        // 处理指令....
        return "{\"errCode\": 0}";
    }
}