diff options
-rw-r--r-- | api/10.xml | 94 | ||||
-rw-r--r-- | api/current.xml | 94 | ||||
-rw-r--r-- | core/java/android/nfc/NfcAdapter.java | 6 | ||||
-rw-r--r-- | core/java/android/nfc/Tag.java | 3 | ||||
-rw-r--r-- | core/java/android/nfc/tech/BasicTagTechnology.java | 11 | ||||
-rw-r--r-- | core/java/android/nfc/tech/Ndef.java | 64 | ||||
-rw-r--r-- | core/java/android/nfc/tech/NdefFormatable.java | 32 | ||||
-rw-r--r-- | core/java/android/nfc/tech/TagTechnology.java | 12 |
8 files changed, 165 insertions, 151 deletions
@@ -100906,7 +100906,7 @@ visibility="public" > </field> -<field name="ACTION_TECHNOLOGY_DISCOVERED" +<field name="ACTION_TECH_DISCOVERED" type="java.lang.String" transient="false" volatile="false" @@ -100975,29 +100975,12 @@ extends="java.lang.Object" abstract="false" static="false" - final="false" + final="true" deprecated="not deprecated" visibility="public" > <implements name="android.os.Parcelable"> </implements> -<method name="createMockTag" - return="android.nfc.Tag" - abstract="false" - native="false" - synchronized="false" - static="true" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="id" type="byte[]"> -</parameter> -<parameter name="techList" type="int[]"> -</parameter> -<parameter name="techListExtras" type="android.os.Bundle[]"> -</parameter> -</method> <method name="describeContents" return="int" abstract="false" @@ -101145,19 +101128,6 @@ visibility="public" > </method> -<method name="reconnect" - return="void" - abstract="false" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<exception name="IOException" type="java.io.IOException"> -</exception> -</method> </class> <class name="IsoDep" extends="android.nfc.tech.BasicTagTechnology" @@ -101745,7 +101715,7 @@ deprecated="not deprecated" visibility="public" > -<method name="canMakeReadonly" +<method name="canMakeReadOnly" return="boolean" abstract="false" native="false" @@ -101807,7 +101777,7 @@ </exception> </method> <method name="getType" - return="int" + return="java.lang.String" abstract="false" native="false" synchronized="false" @@ -101828,7 +101798,7 @@ visibility="public" > </method> -<method name="makeReadonly" +<method name="makeReadOnly" return="boolean" abstract="false" native="false" @@ -101859,10 +101829,10 @@ </exception> </method> <field name="MIFARE_CLASSIC" - type="int" + type="java.lang.String" transient="false" volatile="false" - value="101" + value=""com.nxp.ndef.mifareclassic"" static="true" final="true" deprecated="not deprecated" @@ -101870,10 +101840,10 @@ > </field> <field name="NFC_FORUM_TYPE_1" - type="int" + type="java.lang.String" transient="false" volatile="false" - value="1" + value=""org.nfcforum.ndef.type1"" static="true" final="true" deprecated="not deprecated" @@ -101881,10 +101851,10 @@ > </field> <field name="NFC_FORUM_TYPE_2" - type="int" + type="java.lang.String" transient="false" volatile="false" - value="2" + value=""org.nfcforum.ndef.type2"" static="true" final="true" deprecated="not deprecated" @@ -101892,10 +101862,10 @@ > </field> <field name="NFC_FORUM_TYPE_3" - type="int" + type="java.lang.String" transient="false" volatile="false" - value="3" + value=""org.nfcforum.ndef.type3"" static="true" final="true" deprecated="not deprecated" @@ -101903,21 +101873,10 @@ > </field> <field name="NFC_FORUM_TYPE_4" - type="int" - transient="false" - volatile="false" - value="4" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="OTHER" - type="int" + type="java.lang.String" transient="false" volatile="false" - value="-1" + value=""org.nfcforum.ndef.type4"" static="true" final="true" deprecated="not deprecated" @@ -101950,6 +101909,23 @@ <exception name="IOException" type="java.io.IOException"> </exception> </method> +<method name="formatReadOnly" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="firstMessage" type="android.nfc.NdefMessage"> +</parameter> +<exception name="FormatException" type="android.nfc.FormatException"> +</exception> +<exception name="IOException" type="java.io.IOException"> +</exception> +</method> <method name="get" return="android.nfc.tech.NdefFormatable" abstract="false" @@ -102246,8 +102222,8 @@ visibility="public" > </method> -<method name="reconnect" - return="void" +<method name="isConnected" + return="boolean" abstract="true" native="false" synchronized="false" @@ -102256,8 +102232,6 @@ deprecated="not deprecated" visibility="public" > -<exception name="IOException" type="java.io.IOException"> -</exception> </method> </interface> </package> diff --git a/api/current.xml b/api/current.xml index ad54650..e10b357 100644 --- a/api/current.xml +++ b/api/current.xml @@ -100906,7 +100906,7 @@ visibility="public" > </field> -<field name="ACTION_TECHNOLOGY_DISCOVERED" +<field name="ACTION_TECH_DISCOVERED" type="java.lang.String" transient="false" volatile="false" @@ -100975,29 +100975,12 @@ extends="java.lang.Object" abstract="false" static="false" - final="false" + final="true" deprecated="not deprecated" visibility="public" > <implements name="android.os.Parcelable"> </implements> -<method name="createMockTag" - return="android.nfc.Tag" - abstract="false" - native="false" - synchronized="false" - static="true" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="id" type="byte[]"> -</parameter> -<parameter name="techList" type="int[]"> -</parameter> -<parameter name="techListExtras" type="android.os.Bundle[]"> -</parameter> -</method> <method name="describeContents" return="int" abstract="false" @@ -101145,19 +101128,6 @@ visibility="public" > </method> -<method name="reconnect" - return="void" - abstract="false" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<exception name="IOException" type="java.io.IOException"> -</exception> -</method> </class> <class name="IsoDep" extends="android.nfc.tech.BasicTagTechnology" @@ -101745,7 +101715,7 @@ deprecated="not deprecated" visibility="public" > -<method name="canMakeReadonly" +<method name="canMakeReadOnly" return="boolean" abstract="false" native="false" @@ -101807,7 +101777,7 @@ </exception> </method> <method name="getType" - return="int" + return="java.lang.String" abstract="false" native="false" synchronized="false" @@ -101828,7 +101798,7 @@ visibility="public" > </method> -<method name="makeReadonly" +<method name="makeReadOnly" return="boolean" abstract="false" native="false" @@ -101859,10 +101829,10 @@ </exception> </method> <field name="MIFARE_CLASSIC" - type="int" + type="java.lang.String" transient="false" volatile="false" - value="101" + value=""com.nxp.ndef.mifareclassic"" static="true" final="true" deprecated="not deprecated" @@ -101870,10 +101840,10 @@ > </field> <field name="NFC_FORUM_TYPE_1" - type="int" + type="java.lang.String" transient="false" volatile="false" - value="1" + value=""org.nfcforum.ndef.type1"" static="true" final="true" deprecated="not deprecated" @@ -101881,10 +101851,10 @@ > </field> <field name="NFC_FORUM_TYPE_2" - type="int" + type="java.lang.String" transient="false" volatile="false" - value="2" + value=""org.nfcforum.ndef.type2"" static="true" final="true" deprecated="not deprecated" @@ -101892,10 +101862,10 @@ > </field> <field name="NFC_FORUM_TYPE_3" - type="int" + type="java.lang.String" transient="false" volatile="false" - value="3" + value=""org.nfcforum.ndef.type3"" static="true" final="true" deprecated="not deprecated" @@ -101903,21 +101873,10 @@ > </field> <field name="NFC_FORUM_TYPE_4" - type="int" - transient="false" - volatile="false" - value="4" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="OTHER" - type="int" + type="java.lang.String" transient="false" volatile="false" - value="-1" + value=""org.nfcforum.ndef.type4"" static="true" final="true" deprecated="not deprecated" @@ -101950,6 +101909,23 @@ <exception name="IOException" type="java.io.IOException"> </exception> </method> +<method name="formatReadOnly" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="firstMessage" type="android.nfc.NdefMessage"> +</parameter> +<exception name="FormatException" type="android.nfc.FormatException"> +</exception> +<exception name="IOException" type="java.io.IOException"> +</exception> +</method> <method name="get" return="android.nfc.tech.NdefFormatable" abstract="false" @@ -102246,8 +102222,8 @@ visibility="public" > </method> -<method name="reconnect" - return="void" +<method name="isConnected" + return="boolean" abstract="true" native="false" synchronized="false" @@ -102256,8 +102232,6 @@ deprecated="not deprecated" visibility="public" > -<exception name="IOException" type="java.io.IOException"> -</exception> </method> </interface> </package> diff --git a/core/java/android/nfc/NfcAdapter.java b/core/java/android/nfc/NfcAdapter.java index 4808032..d30a0c6 100644 --- a/core/java/android/nfc/NfcAdapter.java +++ b/core/java/android/nfc/NfcAdapter.java @@ -44,10 +44,10 @@ public final class NfcAdapter { /** * Intent to start an activity when a tag with NDEF payload is discovered. * If the tag has and NDEF payload this intent is started before - * {@link #ACTION_TECHNOLOGY_DISCOVERED}. + * {@link #ACTION_TECH_DISCOVERED}. * * If any activities respond to this intent neither - * {@link #ACTION_TECHNOLOGY_DISCOVERED} or {@link #ACTION_TAG_DISCOVERED} will be started. + * {@link #ACTION_TECH_DISCOVERED} or {@link #ACTION_TAG_DISCOVERED} will be started. */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_NDEF_DISCOVERED = "android.nfc.action.NDEF_DISCOVERED"; @@ -63,7 +63,7 @@ public final class NfcAdapter { * If any activities respond to this intent {@link #ACTION_TAG_DISCOVERED} will not be started. */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) - public static final String ACTION_TECHNOLOGY_DISCOVERED = "android.nfc.action.TECH_DISCOVERED"; + public static final String ACTION_TECH_DISCOVERED = "android.nfc.action.TECH_DISCOVERED"; /** * Intent to start an activity when a tag is discovered. diff --git a/core/java/android/nfc/Tag.java b/core/java/android/nfc/Tag.java index aae75c9..45a3447 100644 --- a/core/java/android/nfc/Tag.java +++ b/core/java/android/nfc/Tag.java @@ -55,7 +55,7 @@ import java.util.Arrays; * not cause any further RF activity or block. Note however that arrays passed to and * returned by this class are *not* cloned, so be careful not to modify them. */ -public class Tag implements Parcelable { +public final class Tag implements Parcelable { /*package*/ final byte[] mId; /*package*/ final int[] mTechList; /*package*/ final String[] mTechStringList; @@ -93,6 +93,7 @@ public class Tag implements Parcelable { * @param id The tag identifier, can be null * @param techList must not be null * @return freshly constructed tag + * @hide */ public static Tag createMockTag(byte[] id, int[] techList, Bundle[] techListExtras) { // set serviceHandle to 0 to indicate mock tag diff --git a/core/java/android/nfc/tech/BasicTagTechnology.java b/core/java/android/nfc/tech/BasicTagTechnology.java index 32a850d..7ec807a 100644 --- a/core/java/android/nfc/tech/BasicTagTechnology.java +++ b/core/java/android/nfc/tech/BasicTagTechnology.java @@ -53,15 +53,7 @@ import java.io.IOException; } } - /** - * Helper to indicate if {@link #connect} has succeeded. - * <p> - * Does not cause RF activity, and does not block. - * @return true if {@link #connect} has completed successfully and the {@link Tag} is believed - * to be within range. Applications must still handle {@link java.io.IOException} - * while using methods that require a connection in case the connection is lost after this - * method returns. - */ + @Override public boolean isConnected() { if (!mIsConnected) { return false; @@ -94,6 +86,7 @@ import java.io.IOException; } } + /** @hide */ @Override public void reconnect() throws IOException { if (!mIsConnected) { diff --git a/core/java/android/nfc/tech/Ndef.java b/core/java/android/nfc/tech/Ndef.java index c6804f9..39ff282 100644 --- a/core/java/android/nfc/tech/Ndef.java +++ b/core/java/android/nfc/tech/Ndef.java @@ -61,12 +61,31 @@ public final class Ndef extends BasicTagTechnology { /** @hide */ public static final String EXTRA_NDEF_TYPE = "ndeftype"; - public static final int OTHER = -1; - public static final int NFC_FORUM_TYPE_1 = 1; - public static final int NFC_FORUM_TYPE_2 = 2; - public static final int NFC_FORUM_TYPE_3 = 3; - public static final int NFC_FORUM_TYPE_4 = 4; - public static final int MIFARE_CLASSIC = 101; + /** @hide */ + public static final int TYPE_OTHER = -1; + /** @hide */ + public static final int TYPE_1 = 1; + /** @hide */ + public static final int TYPE_2 = 2; + /** @hide */ + public static final int TYPE_3 = 3; + /** @hide */ + public static final int TYPE_4 = 4; + /** @hide */ + public static final int TYPE_MIFARE_CLASSIC = 101; + + /** @hide */ + public static final String UNKNOWN = "android.ndef.unknown"; + + public static final String NFC_FORUM_TYPE_1 = "org.nfcforum.ndef.type1"; + + public static final String NFC_FORUM_TYPE_2 = "org.nfcforum.ndef.type2"; + + public static final String NFC_FORUM_TYPE_3 = "org.nfcforum.ndef.type3"; + + public static final String NFC_FORUM_TYPE_4 = "org.nfcforum.ndef.type4"; + + public static final String MIFARE_CLASSIC = "com.nxp.ndef.mifareclassic"; private final int mMaxNdefSize; private final int mCardState; @@ -118,18 +137,27 @@ public final class Ndef extends BasicTagTechnology { * Get NDEF tag type. * <p>Returns one of {@link #NFC_FORUM_TYPE_1}, {@link #NFC_FORUM_TYPE_2}, * {@link #NFC_FORUM_TYPE_3}, {@link #NFC_FORUM_TYPE_4}, - * {@link #MIFARE_CLASSIC} or {@link #OTHER}. - * <p>Platforms of this API revision will always return one of the above - * values. Platforms at future API revisions may return other values, which - * can be treated as {@link #OTHER} by applications targeting this API. + * {@link #MIFARE_CLASSIC} or another NDEF tag type that is not yet in the + * Android API. * <p>Android devices with NFC support must always correctly enumerate * NFC Forum tag types, and may optionally enumerate * {@link #MIFARE_CLASSIC} since it requires proprietary technology. - * Devices that cannot enumerate {@link #MIFARE_CLASSIC} will use - * {@link #OTHER} instead. */ - public int getType() { - return mNdefType; + public String getType() { + switch (mNdefType) { + case TYPE_1: + return NFC_FORUM_TYPE_1; + case TYPE_2: + return NFC_FORUM_TYPE_2; + case TYPE_3: + return NFC_FORUM_TYPE_3; + case TYPE_4: + return NFC_FORUM_TYPE_4; + case TYPE_MIFARE_CLASSIC: + return MIFARE_CLASSIC; + default: + return UNKNOWN; + } } /** @@ -217,10 +245,10 @@ public final class Ndef extends BasicTagTechnology { /** * Indicates whether a tag can be made read-only with - * {@link #makeReadonly()} + * {@link #makeReadOnly()} */ - public boolean canMakeReadonly() { - if (mNdefType == NFC_FORUM_TYPE_1 || mNdefType == NFC_FORUM_TYPE_2) { + public boolean canMakeReadOnly() { + if (mNdefType == TYPE_1 || mNdefType == TYPE_2) { return true; } else { return false; @@ -234,7 +262,7 @@ public final class Ndef extends BasicTagTechnology { * This is a one-way process and can not be reverted! * @throws IOException */ - public boolean makeReadonly() throws IOException { + public boolean makeReadOnly() throws IOException { checkConnected(); try { diff --git a/core/java/android/nfc/tech/NdefFormatable.java b/core/java/android/nfc/tech/NdefFormatable.java index 2919c43..e2828b5 100644 --- a/core/java/android/nfc/tech/NdefFormatable.java +++ b/core/java/android/nfc/tech/NdefFormatable.java @@ -65,8 +65,25 @@ public final class NdefFormatable extends BasicTagTechnology { /** * Formats a tag as NDEF, if possible. You may supply a first * NdefMessage to be written on the tag. + * <p>Either all steps succeed, or an IOException is thrown if any one step + * fails. */ public void format(NdefMessage firstMessage) throws IOException, FormatException { + format(firstMessage, false); + } + + /** + * Formats a tag as NDEF, if possible. You may supply a first + * NdefMessage to be written on the tag. + * <p>Either all steps succeed, or an IOException is thrown if any one step + * fails. + */ + public void formatReadOnly(NdefMessage firstMessage) throws IOException, FormatException { + format(firstMessage, true); + } + + /*package*/ void format(NdefMessage firstMessage, boolean makeReadOnly) throws IOException, + FormatException { checkConnected(); try { @@ -101,6 +118,21 @@ public final class NdefFormatable extends BasicTagTechnology { } else { throw new IOException(); } + // optionally make read-only + if (makeReadOnly) { + errorCode = tagService.ndefMakeReadOnly(serviceHandle); + switch (errorCode) { + case ErrorCodes.SUCCESS: + break; + case ErrorCodes.ERROR_IO: + throw new IOException(); + case ErrorCodes.ERROR_INVALID_PARAM: + throw new IOException(); + default: + // Should not happen + throw new IOException(); + } + } } catch (RemoteException e) { Log.e(TAG, "NFC service dead", e); } diff --git a/core/java/android/nfc/tech/TagTechnology.java b/core/java/android/nfc/tech/TagTechnology.java index c8ccdcf..50df865 100644 --- a/core/java/android/nfc/tech/TagTechnology.java +++ b/core/java/android/nfc/tech/TagTechnology.java @@ -121,6 +121,7 @@ public interface TagTechnology extends Closeable { * @see #connect() * @see #close() * @throws IOException + * @hide */ public void reconnect() throws IOException; @@ -137,4 +138,15 @@ public interface TagTechnology extends Closeable { * @see #reconnect() */ public void close() throws IOException; + + /** + * Helper to indicate if {@link #connect} has succeeded. + * <p> + * Does not cause RF activity, and does not block. + * @return true if {@link #connect} has completed successfully and the {@link Tag} is believed + * to be within range. Applications must still handle {@link java.io.IOException} + * while using methods that require a connection in case the connection is lost after this + * method returns. + */ + public boolean isConnected(); } |