Android NFC прочитал вопрос тегов.Деятельность начинается каждый раз на полученных данных - PullRequest
2 голосов
/ 28 февраля 2012

У меня 2 проблемы с чтением тегов NFC.

Во-первых, каждый раз при получении тега создается операция чтения тега.

И вторая проблема заключается в том, что активность открывается в полноэкранном окне, а не в разделе Действия хоста с вкладками, но первая проблема хуже.

Что мне делать (AndroidManifest.xml):

<activity
    android:name="readingActivity" >
    <intent-filter>
        <action android:name="android.nfc.action.TAG_DISCOVERED" />

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

и readActivity.cs:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.d("W", "onCreate");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.readingActivity);
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.d("W", "onResume");

        PendingIntent intent = PendingIntent.getActivity(this, 0, getIntent(), 0);
         NfcAdapter.getDefaultAdapter(this).enableForegroundDispatch(this, intent, 
                  null, null);
    }

    @Override
    protected void onPause() {
        super.onPause();
        if(NfcAdapter.getDefaultAdapter(this) != null)
        NfcAdapter.getDefaultAdapter(this).disableForegroundDispatch(this);
    }

Журналы:

02-28 18:22:19.949: D/W(4513): onCreate

02-28 18:22:19.949: D/W(4513): onResume

02-28 18:22:21.078: D/W(4513): onCreate

02-28 18:22:21.082: D/W(4513): onResume

1 Ответ

4 голосов
/ 29 февраля 2012

Проблема в PendingIntent.getIntent() возвращает Intent, который запустил ваш Activity, поэтому передача его в PendingIntent приведет к его запуску в другой раз.

Вместо getIntent() используйте что-то вроде new Intent(this.getApplicationContext(), this.getClass()).

...