关于stackoverflow的第一个问题。我试着把事情说清楚并达到标准。我是android开发的新手,尤其是nfc。我正在开发一个应用程序,你可以创建和加入活动,有点像在Facebook上。我有一个listeEvent活动和一个displayEvent活动。当我从列表中选择一个事件时,它会打开displayevent活动,并显示关于我的事件的正确信息。
我希望当x在他的设备上打开了事件a,当他和y在nfc范围内时,y现在在他的设备上打开了事件a。我现在可以打开正确的活动,甚至可以将一个字符串从一个电话发送到另一个电话。我在网上搜索了很多,但我似乎不知道如何通过nfc而不是字符串发送自定义项目(在我的例子中是事件)。我还需要将布尔值与我的事件一起发送。这可能非常简单,但我在那件事上太蠢了。提前非常感谢。
这是我的密码。
显示:

<activity
        android:name="vincent.ievennement.activity.DisplayEventActivity"
        android:parentActivityName="vincent.ievennement.activity.ListeEventActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="vincent.ievennement.activity.ListeEventActivity" />
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>

简历:
protected void onResume() {
    //Normal way to get my Event and my Boolean
    event = (Event) getIntent().getSerializableExtra("MonEvent");
    participe = (boolean) getIntent().getSerializableExtra("Participe");

    //I prepare my message and make it ready to be sent when a device is into range
    NdefMessage messageSend = createNdefMessage("SomeText");
    mNfcAdapter.setNdefPushMessage(messageSend, this);


    Intent intent = getIntent();
    //If my activity is openned by NFC, proceed to get the message that was sent
    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
        Parcelable[] rawMessages = intent.getParcelableArrayExtra(
                NfcAdapter.EXTRA_NDEF_MESSAGES);

        NdefMessage message = (NdefMessage) rawMessages[0]; // only one message transferred
        Log.e("Test - ",new String(message.getRecords()[0].getPayload()));

    }


    super.onResume();

创建ndefMessage:
public NdefMessage createNdefMessage(String message) {
    NdefRecord ndefRecord = NdefRecord.createMime("text/plain", message.getBytes());
    NdefMessage ndefMessage = new NdefMessage(ndefRecord);
    return ndefMessage;
}

最佳答案

您可以使用NdefRecord.createExternal函数创建包含应用程序特定数据的ndefrecord。documentation描述了如何在ndefrecord中包含“有效载荷”。您只需要将“自定义对象”转换为described here的字节数组。然后将其添加到新的ndefrecord并将其添加到ndefMessage。

07-24 22:31