タグがユーザーの電話でタップされたときに連絡先情報を表示するNFC名刺を作成するために、NdefMessageをNFCタグに書き込もうとしています。
メインのアプリケーションを介して連絡先情報を渡したい。EditTextフィールドで、しかし私はユーザーがPeople(Androidのデフォルトアプリ)との連絡先を開くことを望んでいます。
正しいペイロード形式の書き方を理解するのに苦労しています。
これで私を助けてくれることを願っています!、ありがとう。
私はこれを機能させました。上級者向けのシンプルなものですが、私のような初心者はこのようなものを見つけて喜んでくれると思います. 以下のコード例では、Type2 タグの制約により一部のデータをハードコーディングしたことに注意してください。
private NdefRecord createRecord(String text)
throws UnsupportedEncodingException {
//Intent intent = getIntent();
//EditText editTextWeb = (EditText)
EditText editText = (EditText) findViewById(R.id.editTextWeblinks);
String nameVcard = "BEGIN:VCARD" +"\n"+ "VERSION:2.1" +"\n" + "N:;" + editText.getText().toString() + "\n" +"ORG: PlanAyala"+"\n"+ "TEL;HOME:6302421" +"\n"+ "END:VCARD";
byte[] uriField = nameVcard.getBytes(Charset.forName("US-ASCII"));
byte[] payload = new byte[uriField.length + 1]; //add 1 for the URI Prefix
//payload[0] = 0x01; //prefixes http://www. to the URI
System.arraycopy(uriField, 0, payload, 1, uriField.length); //appends URI to payload
NdefRecord nfcRecord = new NdefRecord(
NdefRecord.TNF_MIME_MEDIA, "text/vcard".getBytes(), new byte[0], payload);
return nfcRecord;
}
ウィキペディアから:
mime-media :text/vcard
フォーマット :
BEGIN:VCARD
VERSION:4.0
N:Gump;Forrest;;;
FN: Forrest Gump
ORG:Bubba Gump Shrimp Co.
TITLE:Shrimp Man
PHOTO:http://www.example.com/dir_photos/my_photo.gif
TEL;TYPE=work,voice;VALUE=uri:tel:+1-111-555-1212
TEL;TYPE=home,voice;VALUE=uri:tel:+1-404-555-1212
ADR;TYPE=work;LABEL="42 Plantation St.\nBaytown, LA 30314\nUnited States of America"
:;;42 Plantation St.;Baytown;LA;30314;United States of America
EMAIL:forrestgump@example.com
REV:20080424T195243Z
END:VCARD
NFC ライターを使用して連絡先を書き込み、NFC タグ情報を書き込んでどのように書かれているかを確認できます。
どちらのアプリケーションも Google Play で無料です。