2016-07-30 3 views
0

Я создал приложение, которое читает теги NFC, но я сталкиваюсь с проблемой, что не все группы имеют идентификатор.Android записывает ID в пустой тег NFC

Возможно ли присвоить новый идентификатор пустой теге?

private String tagInfoId = ""; 
private NfcAdapter nfcAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dialog_player); 
    if (!userPrefs.isLoggedIn().get()) finish(); 
    trackerService = ServiceGateway.createAuthorizedService(TrackerService.class); 

    nfcAdapter = NfcAdapter.getDefaultAdapter(this); 
    if (nfcAdapter == null) { 
     Toast.makeText(this, 
       "NFC NOT supported on this devices!", 
       Toast.LENGTH_LONG).show(); 
     finish(); 
    } else if (!nfcAdapter.isEnabled()) { 
     Toast.makeText(this, 
       "NFC NOT Enabled!", 
       Toast.LENGTH_LONG).show(); 
     finish(); 
    } 
} 

@Override 
protected void onResume() { 
    super.onResume(); 

    Intent intent = getIntent(); 
    String action = intent.getAction(); 
    if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) { 
     Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 
     if (tag == null) { 
      Log.d(TAG, "tag == null"); 

      //here is possible to write a new tag code ??? 

     } else { 
      byte[] tagId = tag.getId(); 
      for (int i = 0; i < tagId.length; i++) { 
       tagInfoId += Integer.toHexString(tagId[i] & 0xFF); 
      } 
      Log.d(TAG, "onResume() called with: " + "tagID:" + tagInfoId); 

     } 
    } 
} 

Manifest.xml

<activity 
      android:name=".activities.NfcActivity" 
      android:noHistory="true" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar"> 
      <intent-filter> 
       <action android:name="android.nfc.action.TAG_DISCOVERED" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

Кроме того, если я назначить идентификатор нового тега, будет ли он читать таким же образом, или я должен изменить код выше?

ответ

0

Для намерения NFC намерение дополнительного TAG никогда не должно быть пустым (или null). Следовательно, вы всегда должны получить объект Tag от intent.getParcelableExtra(NfcAdapter.EXTRA_TAG), и вам не следует входить в if (tag == null) {.

Если вы все еще достигли ветки tag == null, это не имеет никакого отношения к тегу, у которого нет идентификатора. Это скорее означает, что что-то пошло не так в стеке NFC вашего устройства. Это может быть, например, то, что чтение тега было прервано на очень ранней стадии или что тег неправильно говорит о протоколе, который ожидает читатель. Поскольку вы не получили объект Tag, также нет способа связаться с тегом.

Следовательно, вы не можете этого сделать. Вы можете только попробовать перечитать тег (путем переназначения его на свой телефон).

Смежные вопросы