最初の質問on stackoverflow。私はそれを明確にし、基準を定めようとしました。私はAndroid開発と特にNFCの新機能です。私はあなたがイベントを作成して参加することができるアプリケーションに取り組んでいます。これはFacebookのようなものです。私はListEventアクティビティとDisplayEventアクティビティを持っています。自分のリストからイベントを選択すると、自分のイベントに関する正しい情報でDisplayEventアクティビティが開かれます。NdefMessageを介してカスタムオブジェクトを渡す方法
Xが自分のデバイスでイベントAを開いているとき、YでNFCの範囲に入ると、Yは自分のデバイスにイベントAを持っています。私は現在、適切なアクティビティを開くことができます。また、ある電話から別の電話にStringを送信することもできます。私はオンラインでたくさんの検索をしましたが、私はカスタムのオブジェクトを、イベントの場合はStringの代わりに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>
onResume:
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();
createNdefMessage:
public NdefMessage createNdefMessage(String message) {
NdefRecord ndefRecord = NdefRecord.createMime("text/plain", message.getBytes());
NdefMessage ndefMessage = new NdefMessage(ndefRecord);
return ndefMessage;
}
ありがとうございます!それは非常に有用だった:) –