如何解决NFC在主动KIOSK模式下无法正常工作
我是使用NFC创建KIOSK应用程序的新手,但遇到了问题。该应用程序在KIOSK模式下运行,并扫描NFC卡。但是有时NFC停止工作,我重新启动设备以保持NFC正常工作,但是有时即使重新启动后NFC也无法正常工作。设备操作系统为Android 7。 这是清单文件:
<activity
android:screenOrientation="portrait"
android:name=".MainActivity"
android:launchMode="singleTask"
android:finishOnTaskLaunch="true"
android:clearTaskOnLaunch="true"
android:stateNotNeeded="true"
android:excludeFromRecents="true"
android:autoRemoveFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
这是活动类中的代码:
class MainActivity : BaseActivity() {
private val kioskManager by lazy {
KioskManager(
activity = this,activityName = MainActivity::class.java.name,componentName = AppDeviceAdminReceiver.getComponentName(this)
)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
isAdmin = devicePolicyManager.isDeviceOwnerApp(packageName)
if (intent.getStringExtra(KioskManager.LOCK_ACTIVITY_KEY) == KioskManager.UNLOCK) {
kioskManager.stopLock()
} else {
kioskManager.startLock()
}
setContentView(R.layout.activity_main)
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
val tagFromIntent: Tag? = intent?.getParcelableExtra(NfcAdapter.EXTRA_TAG)
// handle NFC data
}
override fun onResume() {
super.onResume()
enableNfcForegroundDispatch()
}
override fun onPause() {
disableNfcForegroundDispatch()
super.onPause()
}
private fun enableNfcForegroundDispatch() {
try {
val intent = Intent(this,javaClass).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
val nfcPendingIntent = PendingIntent.getActivity(this,intent,0)
nfcAdapter.enableForegroundDispatch(this,nfcPendingIntent,null,null)
} catch (ex: IllegalStateException) {
ex.printStackTraceDebug()
}
}
private fun disableNfcForegroundDispatch() {
try {
nfcAdapter.disableForegroundDispatch(this)
} catch (ex: IllegalStateException) {
ex.printStackTraceDebug()
}
}
}
我花了一个月的时间来修复此错误,但找不到答案? 如何解决这个问题? 谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。