2013-08-01 4 views
0

onNewIntent (намерение намерения) метод не получает вызов.NFC - Невозможно обнаружить тег

Код я пытаюсь это

public class NfcTagDetector extends Activity{ 

private NfcAdapter mNfcAdapter; 
private PendingIntent pendingIntent; 
private IntentFilter[] intentFiltersArray; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.detect_tag); 
    pendingIntent = PendingIntent.getActivity(
      this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); 
    mNfcAdapter = NfcAdapter.getDefaultAdapter(this); 
    IntentFilter discovery=new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED); 
    IntentFilter ndefDetected = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);   
    IntentFilter techDetected = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED); 

    // Intent filters for writing to a tag 
    intentFiltersArray = new IntentFilter[] { discovery,ndefDetected,techDetected }; 
} 

public void onPause() { 
    super.onPause(); 
    mNfcAdapter.disableForegroundDispatch(this); 
} 

public void onResume() { 
    super.onResume(); 
    mNfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, null); 
} 

@Override 
protected void onNewIntent(Intent intent) { 
    // TODO Auto-generated method stub 
    super.onNewIntent(intent); 
    Log.e("TAP", "onNewIntent"); 
} 

}

И AndroidManifest.xml

<activity android:name="com.example.detect.NfcTagDetector" > 
     <intent-filter> 
      <action android:name="android.nfc.action.TECH_DISCOVERED" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 

     <meta-data 
      android:name="android.nfc.action.TECH_DISCOVERED" 
      android:resource="@xml/nfc_tech_filter" /> 
    </activity> 

nfc_tech_filter.xml файл

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> 
<tech-list> 
    <tech>android.nfc.tech.IsoDep</tech> 
    <tech>android.nfc.tech.NfcA</tech> 
    <tech>android.nfc.tech.NfcB</tech> 
    <tech>android.nfc.tech.NfcF</tech> 
    <tech>android.nfc.tech.NfcV</tech> 
    <tech>android.nfc.tech.Ndef</tech> 
    <tech>android.nfc.tech.NdefFormatable</tech> 
    <tech>android.nfc.tech.MifareClassic</tech> 
    <tech>android.nfc.tech.MifareUltralight</tech> 
</tech-list> 

Пожалуйста, помогите ...

+1

Какую бирку вы пытаетесь обнаружить? Я думаю, проблема может быть в вашем Peanut

+0

@Peanut да, и вы правы и знаете, что .. проблема была в моем устройстве. Я пытался использовать Samsung S II, и его NFC был дефектен. Теперь я попытался на Nexus, и все работает. – aditya

ответ

1

Технический список требует тега, соответствующего всем элементам в списке. Это невозможно в вашем списке. Лучше попробуйте:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> 
<tech-list> 
    <tech>android.nfc.tech.NfcA</tech> 
</tech-list> 
<tech-list> 
    <tech>android.nfc.tech.NfcB</tech> 
</tech-list> 
<tech-list> 
    <tech>android.nfc.tech.NfcF</tech> 
</tech-list> 
<tech-list> 
    <tech>android.nfc.tech.NfcV</tech> 
</tech-list> 
<tech-list> 
    <tech>android.nfc.tech.Ndef</tech> 
</tech-list> 
<tech-list> 
    <tech>android.nfc.tech.NdefFormatable</tech> 
</tech-list> 
<tech-list> 
    <tech>android.nfc.tech.MifareClassic</tech> 
</tech-list> 
<tech-list> 
    <tech>android.nfc.tech.MifareUltralight</tech> 
</tech-list> 
</resources> 
+0

Да, вы правы .. Nd самая большая проблема была, я тестировал код на неисправном устройстве с поддержкой NFC .. спасибо nyways NFC guy .. +1 для ur help .. – aditya

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