Android 如何使用wifi直接连接以传输文件?

Android 如何使用wifi直接连接以传输文件?,android,wifi,file-transfer,wifi-direct,Android,Wifi,File Transfer,Wifi Direct,我想建立一个应用程序使用wifi直接传输文件,我使用NFC来减少配对时间。我已按照和中的说明操作,但我的应用程序无法连接。我从android示例的wifi direct演示中获取了代码 当我追踪时,问题是当wifi直接广播接收器WifiP2pManager.wifi\u P2P\u连接\u更改了\u操作时,网络信息不会与其他设备连接,因此,在我的主类中,实现了ConnectionInfoListener的方法onConnectionInfoAvailable它永远不会被触发 有人能帮我吗?thx

我想建立一个应用程序使用wifi直接传输文件,我使用NFC来减少配对时间。我已按照和中的说明操作,但我的应用程序无法连接。我从android示例的wifi direct演示中获取了代码

当我追踪时,问题是当wifi直接广播接收器
WifiP2pManager.wifi\u P2P\u连接\u更改了\u操作
时,网络信息不会与其他设备连接,因此,在我的主类中,实现了
ConnectionInfoListener
的方法
onConnectionInfoAvailable
它永远不会被触发

有人能帮我吗?thx之前

代码是这样的

无线直接广播接收机 `

我的主课

`

    // how to connect
    WifiP2pConfig config = new WifiP2pConfig();
    config.deviceAddress = names[1];
    config.wps.setup = WpsInfo.PBC;
    config.groupOwnerIntent = 15;
    connect(config);

    public void connect(WifiP2pConfig config) {

    manager.connect(channel, config, new ActionListener() {

        @Override
        public void onSuccess() {
            // WiFiDirectBroadcastReceiver will notify us. Ignore for now.

        }

        @Override
        public void onFailure(int reason) {
            Toast.makeText(getApplicationContext(), "Connect failed. Retry.", Toast.LENGTH_SHORT).show();
        }
    });
}

    public void disconnect() {
    manager.removeGroup(channel, new ActionListener() {

        @Override
        public void onFailure(int reasonCode) {
            //Log.d(TAG, "Disconnect failed. Reason :" + reasonCode);
            Toast.makeText(getApplicationContext(), "Disconnect failed. Reason :" + reasonCode, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onSuccess() {
            Toast.makeText(getApplicationContext(), "Disconnected", Toast.LENGTH_SHORT).show();
        }

    });
}


    public void onChannelDisconnected() {
    // we will try once more
    if (manager != null && !retryChannel) {
        Toast.makeText(this, "Channel lost. Trying again", Toast.LENGTH_LONG).show();
        //resetData();
        retryChannel = true;
        manager.initialize(this, getMainLooper(), this);
    } else {
        Toast.makeText(this,
                "Severe! Channel is probably lost premanently. Try Disable/Re-Enable P2P.",
                Toast.LENGTH_LONG).show();
    }
}


  public void onConnectionInfoAvailable(WifiP2pInfo info) {
    // TODO Auto-generated method stub
    this.info = info;

    // After the group negotiation, we can determine the group owner.
    if (info.groupFormed && info.isGroupOwner) {
        // Do whatever tasks are specific to the group owner.
        // One common case is creating a server thread and accepting
        // incoming connections.
        Toast.makeText(getApplicationContext(), "Owner", Toast.LENGTH_SHORT).show();
    } else if (info.groupFormed) {
        // The other device acts as the client. In this case,
        // you'll want to create a client thread that connects to the group
        // owner.
        Toast.makeText(getApplicationContext(), "Client", Toast.LENGTH_SHORT).show();
    }
}
`

onConnectionInfoAvailable将永远不会执行,因为networkInfo.isConnected()永远不会为true


请帮帮我。。Thx..

您是否收到此广播?WifiP2pManager.WIFI\u P2P\u连接\u更改\u操作。您的代码现在如何@罗纳德·布迪亚托
    // how to connect
    WifiP2pConfig config = new WifiP2pConfig();
    config.deviceAddress = names[1];
    config.wps.setup = WpsInfo.PBC;
    config.groupOwnerIntent = 15;
    connect(config);

    public void connect(WifiP2pConfig config) {

    manager.connect(channel, config, new ActionListener() {

        @Override
        public void onSuccess() {
            // WiFiDirectBroadcastReceiver will notify us. Ignore for now.

        }

        @Override
        public void onFailure(int reason) {
            Toast.makeText(getApplicationContext(), "Connect failed. Retry.", Toast.LENGTH_SHORT).show();
        }
    });
}

    public void disconnect() {
    manager.removeGroup(channel, new ActionListener() {

        @Override
        public void onFailure(int reasonCode) {
            //Log.d(TAG, "Disconnect failed. Reason :" + reasonCode);
            Toast.makeText(getApplicationContext(), "Disconnect failed. Reason :" + reasonCode, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onSuccess() {
            Toast.makeText(getApplicationContext(), "Disconnected", Toast.LENGTH_SHORT).show();
        }

    });
}


    public void onChannelDisconnected() {
    // we will try once more
    if (manager != null && !retryChannel) {
        Toast.makeText(this, "Channel lost. Trying again", Toast.LENGTH_LONG).show();
        //resetData();
        retryChannel = true;
        manager.initialize(this, getMainLooper(), this);
    } else {
        Toast.makeText(this,
                "Severe! Channel is probably lost premanently. Try Disable/Re-Enable P2P.",
                Toast.LENGTH_LONG).show();
    }
}


  public void onConnectionInfoAvailable(WifiP2pInfo info) {
    // TODO Auto-generated method stub
    this.info = info;

    // After the group negotiation, we can determine the group owner.
    if (info.groupFormed && info.isGroupOwner) {
        // Do whatever tasks are specific to the group owner.
        // One common case is creating a server thread and accepting
        // incoming connections.
        Toast.makeText(getApplicationContext(), "Owner", Toast.LENGTH_SHORT).show();
    } else if (info.groupFormed) {
        // The other device acts as the client. In this case,
        // you'll want to create a client thread that connects to the group
        // owner.
        Toast.makeText(getApplicationContext(), "Client", Toast.LENGTH_SHORT).show();
    }
}