summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/current.txt20
-rw-r--r--core/java/android/net/nsd/DnsSdTxtRecord.java1
-rw-r--r--wifi/java/android/net/wifi/p2p/WifiP2pManager.java6
-rw-r--r--wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.java11
-rw-r--r--wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse.java28
5 files changed, 25 insertions, 41 deletions
diff --git a/api/current.txt b/api/current.txt
index 3dd1fc2..84eb896 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -12705,22 +12705,6 @@ package android.net.http {
package android.net.nsd {
- public class DnsSdTxtRecord implements android.os.Parcelable {
- ctor public DnsSdTxtRecord();
- ctor public DnsSdTxtRecord(byte[]);
- ctor public DnsSdTxtRecord(android.net.nsd.DnsSdTxtRecord);
- method public boolean contains(java.lang.String);
- method public int describeContents();
- method public java.lang.String get(java.lang.String);
- method public byte[] getRawData();
- method public int keyCount();
- method public int remove(java.lang.String);
- method public void set(java.lang.String, java.lang.String);
- method public int size();
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator CREATOR;
- }
-
public final class NsdManager {
method public void discoverServices(java.lang.String, int, android.net.nsd.NsdManager.DiscoveryListener);
method public void registerService(android.net.nsd.NsdServiceInfo, int, android.net.nsd.NsdManager.RegistrationListener);
@@ -13342,7 +13326,7 @@ package android.net.wifi.p2p {
}
public static abstract interface WifiP2pManager.DnsSdTxtRecordListener {
- method public abstract void onDnsSdTxtRecordAvailable(java.lang.String, android.net.nsd.DnsSdTxtRecord, android.net.wifi.p2p.WifiP2pDevice);
+ method public abstract void onDnsSdTxtRecordAvailable(java.lang.String, java.util.Map<java.lang.String, java.lang.String>, android.net.wifi.p2p.WifiP2pDevice);
}
public static abstract interface WifiP2pManager.GroupInfoListener {
@@ -13366,7 +13350,7 @@ package android.net.wifi.p2p {
package android.net.wifi.p2p.nsd {
public class WifiP2pDnsSdServiceInfo extends android.net.wifi.p2p.nsd.WifiP2pServiceInfo {
- method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo newInstance(java.lang.String, java.lang.String, android.net.nsd.DnsSdTxtRecord);
+ method public static android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo newInstance(java.lang.String, java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
}
public class WifiP2pDnsSdServiceRequest extends android.net.wifi.p2p.nsd.WifiP2pServiceRequest {
diff --git a/core/java/android/net/nsd/DnsSdTxtRecord.java b/core/java/android/net/nsd/DnsSdTxtRecord.java
index ccb9a91..2f20d44 100644
--- a/core/java/android/net/nsd/DnsSdTxtRecord.java
+++ b/core/java/android/net/nsd/DnsSdTxtRecord.java
@@ -36,6 +36,7 @@ import java.util.Arrays;
*
* The DnsSdTxtRecord object stores the entire TXT data as a single byte array, traversing it
* as need be to implement its various methods.
+ * @hide
*
*/
public class DnsSdTxtRecord implements Parcelable {
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
index ef77d45..2c25e9d 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
@@ -21,7 +21,6 @@ import android.annotation.SdkConstant.SdkConstantType;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.IConnectivityManager;
-import android.net.nsd.DnsSdTxtRecord;
import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo;
import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceResponse;
import android.net.wifi.p2p.nsd.WifiP2pServiceInfo;
@@ -46,6 +45,7 @@ import com.android.internal.util.Protocol;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* This class provides the API for managing Wi-Fi peer-to-peer connectivity. This lets an
@@ -585,11 +585,11 @@ public class WifiP2pManager {
*
* @param fullDomainName full domain name. <br>
* e.g) "MyPrinter._ipp._tcp.local.".
- * @param record txt record.
+ * @param txtRecordMap TXT record data as a map of key/value pairs
* @param srcDevice source device.
*/
public void onDnsSdTxtRecordAvailable(String fullDomainName,
- DnsSdTxtRecord record,
+ Map<String, String> txtRecordMap,
WifiP2pDevice srcDevice);
}
diff --git a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.java b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.java
index 54b7ac4..bc1d3c6 100644
--- a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.java
+++ b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.java
@@ -83,19 +83,22 @@ public class WifiP2pDnsSdServiceInfo extends WifiP2pServiceInfo {
* e.g) "MyPrinter"
* @param serviceType service type.<br>
* e.g) "_ipp._tcp"
- * @param txtRecord TXT record as defined at
+ * @param txtMap TXT record with key/value pair in a map confirming to format defined at
* http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt
* @return Bonjour service information object
*/
public static WifiP2pDnsSdServiceInfo newInstance(String instanceName,
- String serviceType, DnsSdTxtRecord txtRecord) {
+ String serviceType, Map<String, String> txtMap) {
if (TextUtils.isEmpty(instanceName) || TextUtils.isEmpty(serviceType)) {
throw new IllegalArgumentException(
"instance name or service type cannot be empty");
}
- if (txtRecord == null) {
- txtRecord = new DnsSdTxtRecord();
+ DnsSdTxtRecord txtRecord = new DnsSdTxtRecord();
+ if (txtMap != null) {
+ for (String key : txtMap.keySet()) {
+ txtRecord.set(key, txtMap.get(key));
+ }
}
ArrayList<String> queries = new ArrayList<String>();
diff --git a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse.java b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse.java
index c053c8a..ed84a1a 100644
--- a/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse.java
+++ b/wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse.java
@@ -16,7 +16,6 @@
package android.net.wifi.p2p.nsd;
-import android.net.nsd.DnsSdTxtRecord;
import android.net.wifi.p2p.WifiP2pDevice;
import java.io.ByteArrayInputStream;
@@ -68,7 +67,7 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
* This field is only used when the dns type equals to
* {@link WifiP2pDnsSdServiceInfo#DNS_TYPE_TXT}.
*/
- private DnsSdTxtRecord mTxtRecord;
+ private final HashMap<String, String> mTxtRecord = new HashMap<String, String>();
/**
* Virtual memory packet.
@@ -121,7 +120,7 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
* Return TXT record data.
* @return TXT record data.
*/
- public DnsSdTxtRecord getTxtRecord() {
+ public Map<String, String> getTxtRecord() {
return mTxtRecord;
}
@@ -133,8 +132,9 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
sbuf.append(" srcAddr:").append(mDevice.deviceAddress);
sbuf.append(" version:").append(String.format("%02x", mVersion));
sbuf.append(" dnsName:").append(mDnsQueryName);
- if (mTxtRecord != null) {
- sbuf.append(" TxtRecord:").append(mTxtRecord);
+ sbuf.append(" TxtRecord:");
+ for (String key : mTxtRecord.keySet()) {
+ sbuf.append(" key:").append(key).append(" value:").append(mTxtRecord.get(key));
}
if (mInstanceName != null) {
sbuf.append(" InsName:").append(mInstanceName);
@@ -205,10 +205,7 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
mInstanceName = rData.substring(0,
rData.length() - mDnsQueryName.length() -1);
} else if (mDnsType == WifiP2pDnsSdServiceInfo.DNS_TYPE_TXT) {
- mTxtRecord = readTxtData(dis);
- if (mTxtRecord == null) {
- return false;
- }
+ return readTxtData(dis);
} else {
return false;
}
@@ -261,10 +258,9 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
* Read TXT record data.
*
* @param dis
- * @return TXT record data
+ * @return true if TXT data is valid
*/
- private DnsSdTxtRecord readTxtData(DataInputStream dis) {
- DnsSdTxtRecord txtRecord = new DnsSdTxtRecord();
+ private boolean readTxtData(DataInputStream dis) {
try {
while (dis.available() > 0) {
int len = dis.readUnsignedByte();
@@ -275,15 +271,15 @@ public class WifiP2pDnsSdServiceResponse extends WifiP2pServiceResponse {
dis.readFully(data);
String[] keyVal = new String(data).split("=");
if (keyVal.length != 2) {
- return null;
+ return false;
}
- txtRecord.set(keyVal[0], keyVal[1]);
+ mTxtRecord.put(keyVal[0], keyVal[1]);
}
- return txtRecord;
+ return true;
} catch (IOException e) {
e.printStackTrace();
}
- return null;
+ return false;
}
/**