Контекст: Framework 4.5, Xamarin.Android v5.0.
Я хочу использовать технологию NFC для реализации ярлыков для пользователей моего приложения. Я хочу, чтобы пользователи сканировали метку NFC, чтобы им просто нужно было указать значение в предопределенной схеме.
Я поместил некоторые аргументы в свое сообщение NFC, и я делаю это, когда пишу сообщение на своей метке NFC:
var tag = intent.GetParcelableExtra(NfcAdapter.ExtraTag) as Tag;
var ndef = Ndef.Get(tag);
NdefRecord external = NdefRecord.CreateExternal(applicationPackageName(), "letypetype", Encoding.ASCII.GetBytes("param"));
NdefRecord appRecord = NdefRecord.CreateApplicationRecord(applicationPackageName());
NdefMessage ndefMessage = new NdefMessage(external, appRecord);
if (ndef != null)
{
ndef.Connect();
ndef.WriteNdefMessage(ndefMessage);
}
Затем я хочу использовать его в своем приложении, поэтому я поместил его в AndroidManifest.xml следующим образом:
<uses-feature android:name="android.hardware.nfc" android:required="true" />
И в моей основной деятельности у меня есть следующий фильтр намерений:
[IntentFilter(new[] { NfcAdapter.ActionNdefDiscovered },
Categories = new[] { Intent.CategoryDefault },
DataScheme = "vnd.android.nfc", DataPathPrefix = "letypetype",
DataHost = "ext")]
public class Activity1 : Activity
{ ...
И я пытаюсь обработать свой параметр в этом действии с помощью метода переопределения OnResume:
protected override void OnResume()
{
base.OnResume();
if (NfcAdapter.ActionNdefDiscovered.Equals(this.Intent.Action))
{
IParcelable[] rawMsgs = this.Intent.GetParcelableArrayExtra(NfcAdapter.ExtraNdefMessages);
if (rawMsgs != null)
{
NdefMessage[] msgs = new NdefMessage[rawMsgs.Length];
for (int i = 0; i < rawMsgs.Length; i++)
{
msgs[i] = (NdefMessage)rawMsgs[i];
}
}
}
}
Но вернуть его нет возможности. Так что я почти уверен, что делаю что-то не так, но я не знаю, что.