Я пытаюсь прочитать идентификатор карты Mifare Classic 1k, используя диспетчеризацию переднего плана. Как я вижу из своих журналов, я могу включить диспетчеризацию переднего плана, но не могу вызвать метод onNewIntent(). Мы ценим любые предложения.
MainActivity.java
...
@Override
protected void onResume() {
setupForegroundDispatch(this, mAdapter);
super.onResume();
}
public static void setupForegroundDispatch(final Activity activity, NfcAdapter adapter) {
final Intent intent = new Intent(activity.getApplicationContext(), activity.getClass());
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
System.out.println("Setup FGD."); // i can see this output.
final PendingIntent pendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), 0, intent, 0);
IntentFilter[] filters = new IntentFilter[1];
String[][] techList = new String[][]{};
// Notice that this is the same filter as in our manifest.
filters[0] = new IntentFilter();
filters[0].addAction(NfcAdapter.ACTION_NDEF_DISCOVERED);
filters[0].addCategory(Intent.CATEGORY_DEFAULT);
try {
filters[0].addDataType(MIME_TEXT_PLAIN);
} catch (MalformedMimeTypeException e) {
throw new RuntimeException("Check your mime type.");
}
adapter.enableForegroundDispatch(activity, pendingIntent, filters, techList);
System.out.println("Enabled FGD."); // and this one.
}
protected void onNewIntent(Intent intent) {
System.out.println("Intent."); but i cannot see this one,
handleIntent(intent);
}
private void handleIntent(Intent intent) {
System.out.println("Handle."); // and this one.
String action = intent.getAction();
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
System.out.println("NDEF discovered.");
....
Манифест Android
....
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<action android:name="android.nfc.action.TAG_DISCOVERED" />
</intent-filter>
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
</activity>
....