gpt4 book ai didi

android - Intent 选择器与 NFC TECH_DISCOVERED 过滤器和前台调度系统一起显示

转载 作者:行者123 更新时间:2023-11-29 15:42:50 25 4
gpt4 key购买 nike

自从我将 NFC 前台调度注册更改为使用 TECH_DISCOVERED Intent 过滤器后,我一直不得不在多个应用程序之间进行选择以处理 NFC 标签。当发现标签时,有没有办法在我的应用程序中直接接收 NFC Intent ?

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);
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
IntentFilter[] mFilters = new IntentFilter[] {
ndef
};
final PendingIntent pendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), 0, intent, 0);
adapter.enableForegroundDispatch(activity, pendingIntent, mFilters, null);
}

public static void stopForegroundDispatch(final Activity activity, NfcAdapter adapter) {
adapter.disableForegroundDispatch(activity);
}

最佳答案

TECH_DISCOVERED Intent 过滤器需要一个技术列表。因此,您当前的前台调度注册根本不监听任何标签技术。

当您通过 list 注册该 Intent 过滤器时,您将使用

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

做到这一点。同样,当您使用 enableForegroundDispatch() 方法注册前台调度时,您需要在 enableForegroundDispatch()< 的最后一个参数中指定一个技术列表(字符串数组的数组)/。例如。要监听所有可能的标签技术(即 NFC-A 或 NFC-B 或 NFC-F 或 NFC-V 或 NFC-Barcode),您将使用:

IntentFilter[] filters = new IntentFilter[] {
new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED),
};
String[][] techList = new String[][] {
new String[] { NfcA.class.getName() },
new String[] { NfcB.class.getName() },
new String[] { NfcF.class.getName() },
new String[] { NfcV.class.getName() },
new String[] { NfcBarcode.class.getName() },
};
adapter.enableForegroundDispatch(activity, pendingIntent, filters, techList);

请注意,如果您想通过前台调度系统过滤任何标签,您也可以简单地使用 catch-all 前台调度:

adapter.enableForegroundDispatch(activity, pendingIntent, null, null);

但是,请注意,在这种情况下,TAG_DISCOVERED Intent 将传送到您的应用。

关于android - Intent 选择器与 NFC TECH_DISCOVERED 过滤器和前台调度系统一起显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37684119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com