diff --git a/app/src/main/java/i2p/bote/android/Constants.java b/app/src/main/java/i2p/bote/android/Constants.java index 8b4fac5..60d00e2 100644 --- a/app/src/main/java/i2p/bote/android/Constants.java +++ b/app/src/main/java/i2p/bote/android/Constants.java @@ -2,4 +2,10 @@ package i2p.bote.android; public class Constants { public static final String EMAILDEST_SCHEME = "bote"; + + public static final String NDEF_DOMAIN = "i2p.bote"; + public static final String NDEF_TYPE_CONTACT = "contact"; + public static final String NDEF_TYPE_CONTACT_DESTINATION = "contactDestination"; + public static final String NDEF_LEGACY_TYPE_CONTACT = NDEF_DOMAIN + ":" + NDEF_TYPE_CONTACT; + public static final String NDEF_LEGACY_TYPE_CONTACT_DESTINATION = NDEF_DOMAIN + ":" + NDEF_TYPE_CONTACT_DESTINATION; } diff --git a/app/src/main/java/i2p/bote/android/addressbook/EditContactActivity.java b/app/src/main/java/i2p/bote/android/addressbook/EditContactActivity.java index 5c3b3f8..8592c3c 100644 --- a/app/src/main/java/i2p/bote/android/addressbook/EditContactActivity.java +++ b/app/src/main/java/i2p/bote/android/addressbook/EditContactActivity.java @@ -4,12 +4,14 @@ import android.content.Intent; import android.nfc.NdefMessage; import android.nfc.NdefRecord; import android.nfc.NfcAdapter; -import android.os.Build; import android.os.Bundle; import android.os.Parcelable; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.Toolbar; +import java.util.Arrays; + +import i2p.bote.android.Constants; import i2p.bote.android.InitActivities; import i2p.bote.android.R; @@ -45,13 +47,10 @@ public class EditContactActivity extends ActionBarActivity { public void onResume() { super.onResume(); - // NFC receive only works on API 10+ - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD_MR1) { - // Check to see that the Activity started due to an Android Beam - if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction()) || - NfcAdapter.ACTION_TAG_DISCOVERED.equals(getIntent().getAction())) { - processIntent(getIntent()); - } + // Check to see that the Activity started due to an Android Beam + if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction()) || + NfcAdapter.ACTION_TAG_DISCOVERED.equals(getIntent().getAction())) { + processIntent(getIntent()); } } @@ -64,7 +63,7 @@ public class EditContactActivity extends ActionBarActivity { /** * Parses the NDEF Message from the intent */ - void processIntent(Intent intent) { + private void processIntent(Intent intent) { Parcelable[] rawMsgs = intent.getParcelableArrayExtra( NfcAdapter.EXTRA_NDEF_MESSAGES); if (rawMsgs == null || rawMsgs.length < 1) @@ -72,7 +71,11 @@ public class EditContactActivity extends ActionBarActivity { NdefMessage msg = (NdefMessage) rawMsgs[0]; NdefRecord[] records = msg.getRecords(); - if (records.length != 2) + if (records.length != 2 || + records[0].getTnf() != NdefRecord.TNF_EXTERNAL_TYPE || + !Arrays.equals(records[0].getType(), Constants.NDEF_LEGACY_TYPE_CONTACT.getBytes()) || + records[1].getTnf() != NdefRecord.TNF_EXTERNAL_TYPE || + !Arrays.equals(records[1].getType(), Constants.NDEF_LEGACY_TYPE_CONTACT_DESTINATION.getBytes())) return; // TODO notify user? String name = new String(records[0].getPayload()); String destination = new String(records[1].getPayload()); diff --git a/app/src/main/java/i2p/bote/android/addressbook/ViewContactActivity.java b/app/src/main/java/i2p/bote/android/addressbook/ViewContactActivity.java index cbafb0a..dd30571 100644 --- a/app/src/main/java/i2p/bote/android/addressbook/ViewContactActivity.java +++ b/app/src/main/java/i2p/bote/android/addressbook/ViewContactActivity.java @@ -9,7 +9,6 @@ import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import i2p.bote.android.InitActivities; -import i2p.bote.android.R; public class ViewContactActivity extends ActionBarActivity { NfcAdapter mNfcAdapter; diff --git a/app/src/main/java/i2p/bote/android/addressbook/ViewContactFragment.java b/app/src/main/java/i2p/bote/android/addressbook/ViewContactFragment.java index dfb5c7b..7e434ae 100644 --- a/app/src/main/java/i2p/bote/android/addressbook/ViewContactFragment.java +++ b/app/src/main/java/i2p/bote/android/addressbook/ViewContactFragment.java @@ -26,6 +26,7 @@ import android.widget.Toast; import java.security.GeneralSecurityException; +import i2p.bote.android.Constants; import i2p.bote.android.R; import i2p.bote.android.util.BoteHelper; import i2p.bote.fileencryption.PasswordException; @@ -198,13 +199,14 @@ public class ViewContactFragment extends Fragment { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) return new NdefRecord( NdefRecord.TNF_EXTERNAL_TYPE, - "i2p.bote:contact".getBytes(), + Constants.NDEF_LEGACY_TYPE_CONTACT.getBytes(), new byte[0], mContact.getName().getBytes() ); else return NdefRecord.createExternal( - "i2p.bote", "contact", mContact.getName().getBytes() + Constants.NDEF_DOMAIN, Constants.NDEF_TYPE_CONTACT, + mContact.getName().getBytes() ); } @@ -212,13 +214,14 @@ public class ViewContactFragment extends Fragment { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) return new NdefRecord( NdefRecord.TNF_EXTERNAL_TYPE, - "i2p.bote:contactDestination".getBytes(), + Constants.NDEF_LEGACY_TYPE_CONTACT_DESTINATION.getBytes(), new byte[0], mContact.getDestination().getKey().getBytes() ); else return NdefRecord.createExternal( - "i2p.bote", "contactDestination", mContact.getDestination().getKey().getBytes() + Constants.NDEF_DOMAIN, Constants.NDEF_TYPE_CONTACT_DESTINATION, + mContact.getDestination().getKey().getBytes() ); } }