implement "correct" ndef parsing
This commit is contained in:
parent
b3582c970e
commit
b6c20d9260
|
@ -23,6 +23,7 @@ import android.support.v13.app.FragmentPagerAdapter;
|
||||||
import android.support.v4.view.ViewPager;
|
import android.support.v4.view.ViewPager;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
import android.view.ContextMenu.ContextMenuInfo;
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
|
@ -50,6 +51,7 @@ import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import eu.siacs.conversations.Config;
|
||||||
import eu.siacs.conversations.R;
|
import eu.siacs.conversations.R;
|
||||||
import eu.siacs.conversations.entities.Account;
|
import eu.siacs.conversations.entities.Account;
|
||||||
import eu.siacs.conversations.entities.Bookmark;
|
import eu.siacs.conversations.entities.Bookmark;
|
||||||
|
@ -579,6 +581,7 @@ public class StartConversationActivity extends XmppActivity {
|
||||||
case Intent.ACTION_SENDTO:
|
case Intent.ACTION_SENDTO:
|
||||||
try {
|
try {
|
||||||
// TODO use Intent.parse ?!?
|
// TODO use Intent.parse ?!?
|
||||||
|
// sample: imto://xmpp/jid@foo.com
|
||||||
String jid = URLDecoder.decode(
|
String jid = URLDecoder.decode(
|
||||||
intent.getData().getEncodedPath(), "UTF-8").split(
|
intent.getData().getEncodedPath(), "UTF-8").split(
|
||||||
"/")[1];
|
"/")[1];
|
||||||
|
@ -590,21 +593,30 @@ public class StartConversationActivity extends XmppActivity {
|
||||||
invite = new Invite(intent.getData());
|
invite = new Invite(intent.getData());
|
||||||
return invite.invite();
|
return invite.invite();
|
||||||
case NfcAdapter.ACTION_NDEF_DISCOVERED:
|
case NfcAdapter.ACTION_NDEF_DISCOVERED:
|
||||||
Parcelable[] messages = getIntent().getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
|
for (Parcelable message : getIntent().getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)) {
|
||||||
NdefMessage message = (NdefMessage) messages[0];
|
if (message instanceof NdefMessage) {
|
||||||
NdefRecord record = message.getRecords()[0];
|
Log.d(Config.LOGTAG, "received message=" + message);
|
||||||
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
for (NdefRecord record : ((NdefMessage)message).getRecords()) {
|
||||||
invite = new Invite(record.toUri());
|
switch (record.getTnf()) {
|
||||||
} else {
|
case NdefRecord.TNF_WELL_KNOWN:
|
||||||
byte[] mPayload = record.getPayload();
|
if (Arrays.equals(record.getType(), NdefRecord.RTD_URI)) {
|
||||||
if (mPayload[0] == 0) {
|
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||||
invite = new Invite(Uri.parse(new String(Arrays.copyOfRange(
|
invite = new Invite(record.toUri());
|
||||||
mPayload, 1, mPayload.length))));
|
} else {
|
||||||
|
byte[] mPayload = record.getPayload();
|
||||||
|
if (mPayload[0] == 0) {
|
||||||
|
invite = new Invite(Uri.parse(new String(Arrays.copyOfRange(
|
||||||
|
mPayload, 1, mPayload.length))));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (invite != null) {
|
||||||
|
return invite.invite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (invite != null) {
|
|
||||||
return invite.invite();
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in a new issue