大家好,我是开发android应用程序的初学者,目前我需要将一些数据写入NFC标签来检查我自己的NFC读卡器程序,但是,我可以试试这些应用程序只能在标签中写入一条记录,这与我的要求有一些内部记录和最后一条AAR记录是不匹配的,所以我想问问任何人是否知道任何可以提供此功能的应用程序,或者任何人已经写过这样的记录程序之前?谢谢!Android应用程序在NFC标签中添加多条记录
public class Writer extends Activity {
NfcAdapter mAdapter;
PendingIntent mPendingIntent;
IntentFilter mWriteTagFilters[];
boolean mWriteMode;
Tag detectedTag;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_writer);
mAdapter = NfcAdapter.getDefaultAdapter(this);
mPendingIntent = PendingIntent.getActivity(this, 0,
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter tagDetected = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
mWriteTagFilters = new IntentFilter[] { tagDetected };
//enableTagWriteMode();
//Intent intent = getIntent();
}
private void enableTagWriteMode(){
mWriteMode = true;
mAdapter.enableForegroundDispatch(this, mPendingIntent, mWriteTagFilters, null);
}
private void disableTagWriteMode(){
mWriteMode = false;
mAdapter.disableForegroundDispatch(this);
}
public void SetTag(View view){
EditText editText1 = (EditText) findViewById(R.id.edit_message1);
EditText editText2 = (EditText) findViewById(R.id.edit_message2);
String message1 = editText1.getText().toString();
String message2 = editText2.getText().toString();
byte[] textBytes1 = message1.getBytes();
byte[] textBytes2 = message2.getBytes();
NdefRecord textRecord1 = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
message1.getBytes(), new byte[]{}, textBytes1);
NdefRecord textRecord2 = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
message2.getBytes(), new byte[]{}, textBytes2);
NdefMessage mNdefMessage = new NdefMessage(
new NdefRecord[]{
textRecord1,
textRecord2,
NdefRecord.createApplicationRecord("android.reader")
}
);
writeTag(mNdefMessage, detectedTag);
}
public static void writeTag(NdefMessage message, Tag tag){
int size = message.toByteArray().length;
try {
Ndef ndef = Ndef.get(tag);
if (ndef != null){
ndef.connect();
if (ndef.isWritable() && ndef.getMaxSize() > size)
ndef.writeNdefMessage(message);
}else{
NdefFormatable format = NdefFormatable.get(tag);
if (format != null) {
try {
format.connect();
format.format(message);
}catch(IOException e){
}
}
}
}catch(Exception e){
}
}
@Override
protected void onNewIntent(Intent intent){
if(mWriteMode && NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction()))
detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
}
@Override
public void onPause(){
super.onPause();
disableTagWriteMode();
}
@Override
public void onResume(){
super.onResume();
enableTagWriteMode();
}
}
你试了一下自己?请显示一些源代码。 – 2012-07-11 12:00:48
请接受我最近不能在这里发布我的代码,因为我仍然不清楚逻辑,所以我需要一些示例代码来帮助自己。我正在利用这个样本http://www.jessechen.net/blog/how-to-nfc-on-the-android-platform/我之所以感到困惑的原因是因为我想添加一些EditView和一个Button,所以我可以自己输入值,但是使用这种设计,我不确定应该如何修改意图,因为写入操作应该是一个新功能,当我点击按钮 – Conrad 2012-07-11 13:52:37
时会执行对不起我昨天晚上无法提供源代码,因为我把它留在了大学里。 – Conrad 2012-07-12 01:53:44