我试图得到一段代码,能够扫描一个标签,并在TextView中显示该标签…
我真的被这个淹没了,任何建议都会很感激…
当我扫描一个标签时,被发现的标签的噪声被播放…然而,TextView没有更新…所以应用程序目前可以扫描一个标签,但它没有把标签ID放在TextView中…
Java Main Class
package com.security.nfc;
import android.app.Activity;
import android.content.Intent;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.os.Bundle;
import android.widget.TextView;
public class main extends Activity
{
@Override
protected void onCreate(Bundle b)
{
super.onCreate(b);
setContentView(R.layout.main);
}
public void onNewIntent(Intent intent)
{
Tag myTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
TextView tagID = (TextView) findViewById(R.id.result);
tagID.setText("TagID: " + myTag.getId());
}
}
Android清单<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.security.nfc">
<application android:allowBackup="true"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme">
<activity
android:name="com.security.nfc.main">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
</intent-filter>
</activity>
<uses-feature android:name="android.hardware.nfc" android:required="true" />
</application>
<uses-permission android:name="android.permission.NFC" />
</manifest>
如果你想接收NFC标签发现事件,而你的活动已经在前台可见,你应该注册NFC前台调度系统。参见高级NFC:使用NFC前台调度系统。您通常会使用NfcAdapter的enableForegroundDispatch()
方法进行注册。之后,你可以在你的活动的onNewIntent()
方法的意图(或作为一个挂起的意图结果取决于你如何注册)。
void onNewIntent (Intent Intent)
这是调用在他们的包中设置launchMode为"singleTop"的活动,或者如果客户端在调用startActivity(Intent)时使用FLAG_ACTIVITY_SINGLE_TOP标志。在任何一种情况下,当activity在activity栈的顶部被重新启动,而不是一个新的activity实例被启动时,onNewIntent()将在现有的实例上被调用,并使用Intent来重新启动它。
https://developer.android.com/reference/android/app/Activity.html onNewIntent (android.content.Intent)