Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 忽略Android NFC mimeType,应用程序总是在与标签或光束设备接触时启动_Java_Android_Nfc - Fatal编程技术网

Java 忽略Android NFC mimeType,应用程序总是在与标签或光束设备接触时启动

Java 忽略Android NFC mimeType,应用程序总是在与标签或光束设备接触时启动,java,android,nfc,Java,Android,Nfc,我的应用程序有问题。它使用nfc标签进行某些操作(开门/锁门)。 应用程序在默认活动中有一个意向过滤器: <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED" /> <category android:name="android.intent.category.DEFAULT" />

我的应用程序有问题。它使用nfc标签进行某些操作(开门/锁门)。 应用程序在默认活动中有一个意向过滤器:

        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="application/de.juwei.myapplication" />
        </intent-filter>
如果标记没有我的mimetype,则getIntent()为null。因此,如果你举个例子,把智能手机放在一起,试图传送一些数据,那么这个应用程序才刚刚启动。如果我将我的sony smartwatch 3固定在手机上,活动也将开始

非常奇怪的是,如果我试图用这么简单的代码在一个新的应用程序上重现这一点,那么应用程序并不是在每个nfc命令上启动的

但在我的主应用程序中,没有更多nfc特定的方法

我完全迷路了。 有人知道如何跟踪/调试应用程序为什么会被每一条nfc数据打开吗

致以最良好的祝愿,
Juergen看来问题出在enableForegroundDispatch上。 我在onResume和onPause上注释掉了这两个调用,并将Manifest更改为android:launchMode=“singleTask”,它似乎可以工作。 一定是nfc的问题,我不知道


然而,在我的第一次测试中,它现在似乎可以工作了,应用程序并不是每次我在设备背面贴上nfc标签时都会启动。

在enableForegroundDispatch方法中,您必须添加过滤器和技术列表

例如:

IntentFilter 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);
}

mFilters = new IntentFilter[] {
        ndef,
};

mTechLists = new String[][] { new String[] { NfcF.class.getName() } };
NfcAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters,
                mTechLists);

这是越来越奇怪。。。如果我完全删除nfc的意向过滤器,应用程序也将启动!这是怎么回事?是什么导致了全球“我已经准备好接受任何nfc标签”?@Juwei有用吗?抱歉耽搁了!是的,这很有用,谢谢!
IntentFilter 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);
}

mFilters = new IntentFilter[] {
        ndef,
};

mTechLists = new String[][] { new String[] { NfcF.class.getName() } };
NfcAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters,
                mTechLists);