Added in [API level 14](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

# android.net.wifi.p2p

*** ** * ** ***

Provides classes to create peer-to-peer (P2P) connections with Wi-Fi Direct.

Using these APIs, you can discover and connect to other devices when each device supports Wi-Fi Direct, then communicate over a speedy connection across distances much longer than a Bluetooth connection. The primary class you need to work with is `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager`, which you can acquire by calling `https://developer.android.com/reference/android/content/Context#getSystemService(java.lang.Class<T>)`. The `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager` includes APIs that allow you to:

- Initialize your application for P2P connections by calling `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager#initialize(android.content.Context,%20android.os.Looper,%20android.net.wifi.p2p.WifiP2pManager.ChannelListener)`
- Discover nearby devices by calling `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager#discoverPeers(android.net.wifi.p2p.WifiP2pManager.Channel,%20android.net.wifi.p2p.WifiP2pManager.ActionListener)`
- Start a P2P connection by calling `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager#connect(android.net.wifi.p2p.WifiP2pManager.Channel,%20android.net.wifi.p2p.WifiP2pConfig,%20android.net.wifi.p2p.WifiP2pManager.ActionListener)`
- And more

Several other interfaces and classes are necessary as well, such as:

- The `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ActionListener` interface allows you to receive callbacks when an operation such as discovering peers or connecting to them succeeds or fails.
- `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.PeerListListener` interface allows you to receive information about discovered peers. The callback provides a `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDeviceList`, from which you can retrieve a `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDevice` object for each device within range and get information such as the device name, address, device type, the WPS configurations the device supports, and more.
- The `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.GroupInfoListener` interface allows you to receive information about a P2P group. The callback provides a `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pGroup` object, which provides group information such as the owner, the network name, and passphrase.
- `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ConnectionInfoListener` interface allows you to receive information about the current connection. The callback provides a `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pInfo` object, which has information such as whether a group has been formed and who is the group owner.

In order to use the Wi-Fi P2P APIs, your app must request the following user permissions:

- `https://developer.android.com/reference/android/Manifest.permission#ACCESS_WIFI_STATE`
- `https://developer.android.com/reference/android/Manifest.permission#CHANGE_WIFI_STATE`
- `https://developer.android.com/reference/android/Manifest.permission#INTERNET` (although your app doesn\\u2019t technically connect to the Internet, communicating to Wi-Fi Direct peers with standard java sockets requires Internet permission).

For example code, see the [Wi-Fi Direct Demo](https://developer.android.com/resources/samples/WiFiDirectDemo) sample application.

**Note:** Not all Android-powered devices support Wi-Fi Direct. If your application uses Wi-Fi Direct, declare so with a [`<uses-feature>`](https://developer.android.com/guide/topics/manifest/uses-feature-element) element in the manifest file:

```
<manifest ...>
    <uses-feature android:name="android.hardware.wifi.direct" />
    ...
</manifest>
```

## Interfaces

|---|---|
| [WifiP2pManager.ActionListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ActionListener) | Interface for callback invocation on an application action |
| [WifiP2pManager.ChannelListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ChannelListener) | Interface for callback invocation when framework channel is lost |
| [WifiP2pManager.ConnectionInfoListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ConnectionInfoListener) | Interface for callback invocation when connection info is available |
| [WifiP2pManager.DeviceInfoListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.DeviceInfoListener) | Interface for callback invocation when `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDevice` is available in response to `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager#requestDeviceInfo(android.net.wifi.p2p.WifiP2pManager.Channel,%20android.net.wifi.p2p.WifiP2pManager.DeviceInfoListener)`. |
| [WifiP2pManager.DiscoveryStateListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.DiscoveryStateListener) | Interface for callback invocation when p2p state is available in response to `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager#requestDiscoveryState(android.net.wifi.p2p.WifiP2pManager.Channel,%20android.net.wifi.p2p.WifiP2pManager.DiscoveryStateListener)`. |
| [WifiP2pManager.DnsSdServiceResponseListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.DnsSdServiceResponseListener) | Interface for callback invocation when Bonjour service discovery response is received |
| [WifiP2pManager.DnsSdTxtRecordListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.DnsSdTxtRecordListener) | Interface for callback invocation when Bonjour TXT record is available for a service |
| [WifiP2pManager.ExternalApproverRequestListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ExternalApproverRequestListener) | Interface for callback invocation when an incoming request is received. |
| [WifiP2pManager.GroupInfoListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.GroupInfoListener) | Interface for callback invocation when group info is available |
| [WifiP2pManager.NetworkInfoListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.NetworkInfoListener) | Interface for callback invocation when `https://developer.android.com/reference/android/net/NetworkInfo` is available in response to `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager#requestNetworkInfo(android.net.wifi.p2p.WifiP2pManager.Channel,%20android.net.wifi.p2p.WifiP2pManager.NetworkInfoListener)`. |
| [WifiP2pManager.P2pStateListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.P2pStateListener) | Interface for callback invocation when p2p state is available in response to `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager#requestP2pState(android.net.wifi.p2p.WifiP2pManager.Channel,%20android.net.wifi.p2p.WifiP2pManager.P2pStateListener)`. |
| [WifiP2pManager.PeerListListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.PeerListListener) | Interface for callback invocation when peer list is available |
| [WifiP2pManager.ServiceResponseListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ServiceResponseListener) | Interface for callback invocation when service discovery response other than Upnp or Bonjour is received |
| [WifiP2pManager.UpnpServiceResponseListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.UpnpServiceResponseListener) | Interface for callback invocation when upnp service discovery response is received |
| [WifiP2pManager.WifiP2pListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.WifiP2pListener) | Interface used to listen to Wi-Fi p2p various changes such as device state change, discovery started/stopped, connection change, etc. |

## Classes

|---|---|
| [WifiP2pConfig](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConfig) | A class representing a Wi-Fi P2p configuration for setting up a connection |
| [WifiP2pConfig.Builder](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConfig.Builder) | Builder used to build `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConfig` objects for creating or joining a group. |
| [WifiP2pConnectionInfo](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConnectionInfo) | A class representing the connection capabilities of a Wi-Fi P2P link. |
| [WifiP2pDevice](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDevice) | A class representing a Wi-Fi p2p device Note that the operations are not thread safe |
| [WifiP2pDeviceList](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDeviceList) | A class representing a Wi-Fi P2p device list. |
| [WifiP2pDirInfo](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDirInfo) | This object contains the Device Identity Resolution (DIR) Info to check if the device is a previously paired device. |
| [WifiP2pDiscoveryConfig](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDiscoveryConfig) | A class representing a Wi-Fi P2P scan configuration for setting up discovery. |
| [WifiP2pDiscoveryConfig.Builder](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDiscoveryConfig.Builder) | Builder for `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDiscoveryConfig`. |
| [WifiP2pGroup](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pGroup) | A class representing a Wi-Fi P2p group. |
| [WifiP2pInfo](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pInfo) | A class representing connection information about a Wi-Fi p2p group |
| [WifiP2pManager](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager) | This class provides the API for managing Wi-Fi peer-to-peer connectivity. |
| [WifiP2pManager.Channel](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.Channel) | A channel that connects the application to the Wifi p2p framework. |
| [WifiP2pPairingBootstrappingConfig](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pPairingBootstrappingConfig) | A class representing Wi-Fi Direct pairing bootstrapping configuration. |
| [WifiP2pUsdBasedLocalServiceAdvertisementConfig](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pUsdBasedLocalServiceAdvertisementConfig) | A class representing a Wi-Fi P2P USD based service advertisement configuration for advertising the services. |
| [WifiP2pUsdBasedLocalServiceAdvertisementConfig.Builder](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pUsdBasedLocalServiceAdvertisementConfig.Builder) | Builder for `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pUsdBasedLocalServiceAdvertisementConfig`. |
| [WifiP2pUsdBasedServiceDiscoveryConfig](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pUsdBasedServiceDiscoveryConfig) | A class representing a Wi-Fi P2P USD based service discovery configuration for discovering the services. |
| [WifiP2pUsdBasedServiceDiscoveryConfig.Builder](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pUsdBasedServiceDiscoveryConfig.Builder) | Builder for `https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pUsdBasedServiceDiscoveryConfig`. |
| [WifiP2pWfdInfo](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pWfdInfo) | A class representing Wifi Display information for a device. |

-

  ## Interfaces

  - [WifiP2pManager.ActionListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ActionListener)
  - [WifiP2pManager.ChannelListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ChannelListener)
  - [WifiP2pManager.ConnectionInfoListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ConnectionInfoListener)
  - [WifiP2pManager.DeviceInfoListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.DeviceInfoListener)
  - [WifiP2pManager.DiscoveryStateListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.DiscoveryStateListener)
  - [WifiP2pManager.DnsSdServiceResponseListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.DnsSdServiceResponseListener)
  - [WifiP2pManager.DnsSdTxtRecordListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.DnsSdTxtRecordListener)
  - [WifiP2pManager.ExternalApproverRequestListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ExternalApproverRequestListener)
  - [WifiP2pManager.GroupInfoListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.GroupInfoListener)
  - [WifiP2pManager.NetworkInfoListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.NetworkInfoListener)
  - [WifiP2pManager.P2pStateListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.P2pStateListener)
  - [WifiP2pManager.PeerListListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.PeerListListener)
  - [WifiP2pManager.ServiceResponseListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.ServiceResponseListener)
  - [WifiP2pManager.UpnpServiceResponseListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.UpnpServiceResponseListener)
  - [WifiP2pManager.WifiP2pListener](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.WifiP2pListener)
-

  ## Classes

  - [WifiP2pConfig](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConfig)
  - [WifiP2pConfig.Builder](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConfig.Builder)
  - [WifiP2pConnectionInfo](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConnectionInfo)
  - [WifiP2pDevice](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDevice)
  - [WifiP2pDeviceList](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDeviceList)
  - [WifiP2pDirInfo](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDirInfo)
  - [WifiP2pDiscoveryConfig](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDiscoveryConfig)
  - [WifiP2pDiscoveryConfig.Builder](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pDiscoveryConfig.Builder)
  - [WifiP2pGroup](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pGroup)
  - [WifiP2pInfo](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pInfo)
  - [WifiP2pManager](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager)
  - [WifiP2pManager.Channel](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.Channel)
  - [WifiP2pPairingBootstrappingConfig](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pPairingBootstrappingConfig)
  - [WifiP2pUsdBasedLocalServiceAdvertisementConfig](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pUsdBasedLocalServiceAdvertisementConfig)
  - [WifiP2pUsdBasedLocalServiceAdvertisementConfig.Builder](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pUsdBasedLocalServiceAdvertisementConfig.Builder)
  - [WifiP2pUsdBasedServiceDiscoveryConfig](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pUsdBasedServiceDiscoveryConfig)
  - [WifiP2pUsdBasedServiceDiscoveryConfig.Builder](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pUsdBasedServiceDiscoveryConfig.Builder)
  - [WifiP2pWfdInfo](https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pWfdInfo)