Не могу прочитать тег NFC в режиме foregorund - PullRequest
0 голосов
/ 04 ноября 2011

Мне нужно выбрать свою активность, когда телефон прочитал метку. Мое приложение должно быть видно в окне выбора активности.

В файле манифеста моей деятельности у меня есть

        <activity android:name=".WaitingPayment" android:noHistory="true"
        android:theme="@android:style/Theme.NoTitleBar"
        android:screenOrientation="portrait" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <data android:mimeType="*/*" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

В классе занятий у меня есть:

nfcAdapter = NfcAdapter.getDefaultAdapter(this);

    pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
    ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
    try {
        ndef.addDataType("*/*");    /* Handles all MIME based dispatches. 
                                       You should specify only the ones that you need. */
    }
    catch (MalformedMimeTypeException e) {
        throw new RuntimeException("fail", e);
    }
    this.intentFiltersArray = new IntentFilter[] {ndef};
    this.techListsArray = new String[][] { new String[] { MifareUltralight.class.getName(), Ndef.class.getName(), NfcA.class.getName()}};

Что я могу сделать, чтобы увидеть свой тег на селекторе активности и обработать его? Мой тег это URI

спасибо

Ответы [ 3 ]

0 голосов
/ 22 декабря 2011

Ваш код использует диспетчеризацию переднего плана, что не нужно.Просто используйте фильтр намерений.Если ваше приложение является единственным фильтром для этого URI, оно запустится автоматически.Если есть несколько приложений, которые могут обрабатывать URI, ваше приложение появится в панели запуска действий.Вам не нужен второй фрагмент кода, только фрагмент в ответе Бена и измените его для своего URI.

0 голосов
/ 13 апреля 2014

Выбор активности появляется только в том случае, если более одного приложения имеют один и тот же фильтр намерений. Поскольку у вас есть Uri, записанный в ваш тег, вы должны использовать

<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"
     android:host="developer.android.com"
     android:pathPrefix="/index.html" />
</intent-filter>
0 голосов
/ 05 ноября 2011

вы можете попробовать это для URI:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="http"
        android:host="developer.android.com"
        android:pathPrefix="/index.html" />
</intent-filter>

Это будет подходящий способ для определения типа URI Ndef.Ваш код ищет MIME-тип.Самая большая вещь, которую нужно искать - это ТИП записи Ndef.

Вы можете использовать эту ссылку для получения дополнительной информации по этому вопросу: http://developer.android.com/guide/topics/nfc/nfc.html

...