Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.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 如何使用NFC扫描标签?_Java_Android_Nfc - Fatal编程技术网

Java 如何使用NFC扫描标签?

Java 如何使用NFC扫描标签?,java,android,nfc,Java,Android,Nfc,我只是尝试读取标签的内容。但我研究的时间越长,我就越觉得自己是唯一一个不明白这是怎么回事的人 通过查看developer.android.com网站,我发现了以下方法: public String readTag(Tag tag) { MifareUltralight mifare = MifareUltralight.get(tag); try { mifare.connect(); byte[] payl

我只是尝试读取标签的内容。但我研究的时间越长,我就越觉得自己是唯一一个不明白这是怎么回事的人

通过查看developer.android.com网站,我发现了以下方法:

    public String readTag(Tag tag) {
        MifareUltralight mifare = MifareUltralight.get(tag);
        try {
            mifare.connect();
            byte[] payload = mifare.readPages(4);
            return new String(payload, Charset.forName("US-ASCII"));
        } catch (IOException e) {
            Log.e(TAG, "IOException while writing Scanner message...", e);
        } finally {
            if (mifare != null) {
                try {
                    mifare.close();
                }
                catch (IOException e) {
                    Log.e(TAG, "Error closing tag...", e);
                }
            }
        }
        return null;
    }
现在,在使用它之前,我需要初始化一些东西:

    public void configScanner()
    {
        Intent intent = getIntent();
        tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        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);
        }
        intentFiltersArray = new IntentFilter[] {ndef, };
        techListsArray = new String[][] { new String[] { Ndef.class.getName() } };
    }
然后我就试着去执行它

public void scanClick(View v) 
{
    textview1.setText(readTag(tag));
}
我还在清单和我自己的XML文件中添加了一些内容

舱单:

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

我在你发布的清单中没有看到这一点,但你真的需要它

将此添加到您的清单中

<uses-permission android:name="android.permission.NFC" />

我在您发布的清单中没有看到这一点,但您确实需要它

将此添加到您的清单中

<uses-permission android:name="android.permission.NFC" />


您能发布logcat输出吗?好的,它就在那里说明了错误是什么以及导致错误的原因。我对这些特定的错误知之甚少,所以我建议您搜索InvocationTargetException您能发布logcat输出吗?好的,它就在那里说明了错误是什么以及导致错误的原因。我对这些特定错误知之甚少,因此我建议您在其中搜索InvocationTargetExceptionits,以及Ok,然后请发布logcat输出,说明错误所在,以及Ok,然后请发布logcat输出,说明错误所在
<uses-permission android:name="android.permission.NFC" />