diff options
| -rw-r--r-- | api/current.txt | 20 | ||||
| -rw-r--r-- | core/java/android/net/nsd/DnsSdTxtRecord.java | 1 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/p2p/WifiP2pManager.java | 6 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo.java | 11 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse.java | 28 |
5 files changed, 25 insertions, 41 deletions
diff --git a/api/current.txt b/api/current.txt index a8bf949..b805256 100644 --- a/api/current.txt +++ b/api/current.txt @@ -12708,22 +12708,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); @@ -13345,7 +13329,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 { @@ -13369,7 +13353,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; } /** |
