2016-07-30 4 views
0

NFCタグを読み取るアプリを作ったが、すべてのバンドがIDを持っているわけではないという問題に直面している。空のNFCタグへのAndroidの書き込みID

空のタグに新しいIDを割り当てることはできますか?

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> 

私は新しいタグにIDを割り当てた場合にも、それは同じようにそれを読み込みますか、私は上記のコードを変更する必要がありますか?

答えて

0

NFCインテントの場合、余分なTAGの意図は決して空であってはなりません(またはnull)。したがって、intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)から常にTagオブジェクトを取得し、if (tag == null) {に分岐しないでください。

まだtag == nullブランチに達しても、これは識別子を持たないタグとは関係ありません。むしろ、デバイスのNFCスタックで何かがひどく間違っていたことを意味します。これは、例えば、タグ読み取りが非常に早い段階で中断されたか、またはタグが読み取り者が予期しているプロトコルを正しく発言していない可能性がある。 Tagオブジェクトを受け取らなかったので、タグと通信する方法もありません。

したがって、これについてはあまりできません。あなたは、(あなたの携帯電話でそれをリトポルすることにより)タグを再読み込みしようとすることができます。

関連する問題