android - NFC sending wrong tag/records -


my activity implementing

createndefmessagecallback, onndefpushcompletecallback 

i'm calling

    mnfcadapter.setndefpushmessagecallback(this, this);     // register callback listen message-sent success     mnfcadapter.setonndefpushcompletecallback(this, this); 

i've overriden

@override public ndefmessage createndefmessage(nfcevent event) {     log.d(tag, "creating massage");     string text = tag + data_splitter + address + data_splitter             + user_name;      // nachricht vorbereiten.     // string text = "hello nfc world!";     ndefrecord record = new ndefrecord(ndefrecord.tnf_mime_media,             mime_type.getbytes(), new byte[0], text.getbytes());     ndefrecord[] records = { record };     ndefmessage msg = new ndefmessage(records);     return msg; } 

but when i'm receiving, different records, 2 of them, 1 market uri search application, 1 java package name (i guess). before this, i've used enableforegroundndefpush... etc, without callback, need handle completion of push on both devices.. i've changed way, , not transfer data anymore.

edit:

to make better understandable:

public class nfcactivity extends activity implements createndefmessagecallback,     onndefpushcompletecallback { // ================================ member ================================= // speichert den nfc adapter. private nfcadapter mnfcadapter = null; private boolean retrychannel = false;  public static final string tag = "nfcactivity"; private static final string data_splitter = "__:data:__"; private static final string mime_type = "application/my.applications.mimetype";  private string address = null; private string user_name = null;  // speichert das intent, welches von android mit erkannten tags gefüllt // und die activity weitergeleitet wird. private pendingintent mnfcpendingintent = null;  private static final string log_tag = "nfcactivity";  @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.main);      address = "something";      user_name = "someone";      // zugriff auf den nfc adapter erhalten.     mnfcadapter = nfcadapter.getdefaultadapter(this);      mnfcadapter.setndefpushmessagecallback(this, this);     mnfcadapter.setonndefpushcompletecallback(this, this);      intent intent = new intent(this, getclass());     intent.addflags(intent.flag_activity_single_top);     mnfcpendingintent = pendingintent.getactivity(this, 0, intent, 0); }  @override protected void onnewintent(intent intent) {     if (!nfcadapter.action_ndef_discovered.equals(intent.getaction())) {         return;     }      // nutzdaten des intent auslesen.     parcelable[] rawmsgs = intent             .getparcelablearrayextra(nfcadapter.extra_ndef_messages);     if (rawmsgs == null) {         return;     }      (int = 0; < rawmsgs.length; ++i) {         ndefmessage msg = (ndefmessage) rawmsgs[i];         ndefrecord[] records = msg.getrecords();         (ndefrecord record : records) {             string text = new string(record.getpayload());                             // 1 has wrong content. receive 2 records, 1 market, 1 java packet name (or something)         }     } }  @override protected void onresume() {     super.onresume();              // activate receiving of messages     mnfcadapter.enableforegrounddispatch(this, mnfcpendingintent, null,             null); }  @override protected void onpause() {     super.onpause();     // deactivate receiving     mnfcadapter.disableforegrounddispatch(this); }   private void logerror(string msg) {     toast.maketext(this, msg, toast.length_long).show();     log.v(log_tag, msg); }  @override public void onndefpushcomplete(nfcevent arg0) {     log.d(tag, "push complete"); }  @override public ndefmessage createndefmessage(nfcevent event) {     log.d(tag, "creating massage");              string text = "asdfgh";      // nachricht vorbereiten.     // string text = "hello nfc world!";     ndefrecord record = new ndefrecord(ndefrecord.tnf_mime_media,             mime_type.getbytes(), new byte[0], text.getbytes());     ndefrecord[] records = { record };     ndefmessage msg = new ndefmessage(records);     return msg; }  } 

i post answer you, can accept it.

the solution wrong mime-type inside android-manifest. must same ndefrecord defines


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -