WifiDirect:有时DnsSdServiceResponseListener回调从未被系统调用

时间:2017-01-12 11:10:17

标签: android p2p wifi-direct wifip2p

这是DnsSdServiceResponseListener

的基本用法
    WifiP2pManager manager = (WifiP2pManager) context.getSystemService(Context.WIFI_P2P_SERVICE);
    WifiP2pManager.Channel channel = manager.initialize(context, context.getMainLooper(), null);

    manager.setDnsSdResponseListeners(channel, new WifiP2pManager.DnsSdServiceResponseListener() {
        @Override
        public void onDnsSdServiceAvailable(String instanceName, String registrationType, WifiP2pDevice srcDevice) {
            Log.d("OK" , "called"); 
        }
    }, null);

在此回调中,启动了与组所有者的WifiConnection

问:为什么永远不会调用方法onDnsSdServiceAvailable?这是一个浮动的错误,我无法捕捉并描述它的原因。 为了让它再次工作,我必须手动重启Wifi

1 个答案:

答案 0 :(得分:0)

当WiFiP2PManager发现服务实例时,将调用DnsSdServiceResponseListener。因此,在将其添加到manager对象后,请确保开始发现服务。

manager.discoverServices(mChannel, new WifiP2pManager.ActionListener() {

        @Override
        public void onSuccess() {
            // Success!
        }

        @Override
        public void onFailure(int code) {
            // Command failed.  Check for P2P_UNSUPPORTED, ERROR, or BUSY
        }
    });

希望这有帮助。