大佬教程收集整理的这篇文章主要介绍了如何在Android上制作vcard / vcal Ndef消息,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如果有人可以发布一些示例代码或更好地指向类似教程的资源,那将是很好的!
编辑:这是我一直在使用的代码,它搞砸了.通过一些修改,我已经能够写出纯文本和智能海报/ urs数据.另外要记得的是,我正在使用Type 2 NFC标签,因为存储容量有限,我只想保存名称和放大器. Vcards上的电话号码,或活动名称& Vcal记录的日期.谢谢!
公共类VcardActivity扩展Activity {
NfcAdapter adapter; PendingIntent pendingIntent; IntentFilter writeTagFilters[]; Tag tag; Context ctx; Boolean writeMode; @Override public void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.activity_text); getActionBar().setDisplayHomeAsUpEnabled(true); ctx = this; Switch swWrite = (Switch) findViewById(R.id.switchWriteText); //final TextView msg = (TextView) findViewById(R.id.editText1); final String msg = "BEGIN:VCARD\n" + "VERSION:2.1\n" + "N:Gump;Forrest\n" + "FN:Forrest Gump\n" + "ORG:Bubba Gump Shrimp Co.\n" + "titlE:Shrimp Man\n" + "TEL;WORK;VOICE111) 555-1212\n" + "TEL;HOME;VOICE404) 555-1212\n" + "ADR;WORK:;;100 Edge;Baytown;United\n" + "EMAIL;PREF;INTERNET:forrestgump@example.com\n " + "END:VCARD"; swWrite.setOncheckedchangelistener(new CompoundButton.oncheckedchangelistener() { @Override public void oncheckedChanged(CompoundButton buttonView,Boolean ischecked) { if (ischecked) { try { if (tag == null) { Toast.makeText(ctx,ctx.getString(R.String.error_detected),Toast.LENGTH_SHORT).show(); } else { write(msg,tag); Toast.makeText(ctx,ctx.getString(R.String.ok_wriTing),Toast.LENGTH_LONG).show(); } } catch (IOException E) { Toast.makeText(ctx,ctx.getString(R.String.error_wriTing),Toast.LENGTH_LONG).show(); e.printStackTrace(); } catch (FormatException E) { Toast.makeText(ctx,Toast.LENGTH_LONG).show(); e.printStackTrace(); } } } }); /* INTENT FILTER */ adapter = NfcAdapter.getDefaultAdapter(this); pendingIntent = PendingIntent.getActivity(this,new Intent(this,getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOp),0); IntentFilter tagDetected = new IntentFilter( NfcAdapter.ACTION_TAG_DISCOVERED); tagDetected.addCategory(Intent.CATEGORY_DEFAULT); writeTagFilters = new IntentFilter[] { tagDetected }; } @Override public Boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_text,menu); return true; } @Override public Boolean onOptionsItemSELEcted(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSaMetask(this); return true; } return super.onOptionsItemSELEcted(item); } private void write(String text,Tag tag) throws IOException,FormatException { NdefRecord[] records = { createRecord(text) }; Ndefmessage message = new Ndefmessage(records); // Get an instance of Ndef for the tag. Ndef ndef = Ndef.get(tag); // Enable I/O ndef.connect(); // Write the message ndef.writeNdefmessage(messagE); // Close the connection ndef.close(); } private NdefRecord createRecord(String text) throws UnsupportedEncodingException { String msg = "BEGIN:VCARD\n" + "VERSION:2.1\n" + "N:Gump;Forrest\n" + "FN:Forrest Gump\n" + "ORG:Bubba Gump Shrimp Co.\n" + "titlE:Shrimp Man\n" + "TEL;WORK;VOICE:55-1212\n" + "TEL;HOME;VOICE:55-1212\n" + "ADR;WORK:;;100 Edge;Ban;United\n" + "EMAIL;PREF;INTERNET:p@example.com\n " + "END:VCARD"; byte[] textBytes = msg.getBytes(); NdefRecord textRecord = new NdefRecord(NdefRecord.TNF_MIME_MEDIA,"text/x-vCard".getBytes(),new byte[] {},textBytes); return textRecord; } @Override protected void onNewIntent(Intent intent) { if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); Toast.makeText(this,this.getString(R.String.ok_detection) + tag.toString(),Toast.LENGTH_LONG).show(); } } @Override public void onPause() { super.onPause(); WriteModeOff(); } @Override public void onResume() { super.onResume(); WriteModeOn(); } private void WriteModeOn() { writeMode = true; adapter.enableForegroundDispatch(this,pendingIntent,writeTagFilters,@R_607_6633@ } private void WriteModeOff() { writeMode = false; adapter.disableForegroundDispatch(this); }
}
为了了解NDEF格式本身,我还编写了一个Eclipse plugin,它提供了一个基于文件的图形编辑器.
干杯:-)
以上是大佬教程为你收集整理的如何在Android上制作vcard / vcal Ndef消息全部内容,希望文章能够帮你解决如何在Android上制作vcard / vcal Ndef消息所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。