问题描述
我正在尝试使用在 KitKat 上运行的 MobiPrint 设备读取 NFC NDEF 消息。
我按照 Docs 中的说明进行操作,但我似乎无法让它在 Kitkat 上运行。
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.pos">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.NFC" />
<uses-feature android:name="android.hardware.nfc" android:required="true"/>
<application
android:name=".App"
android:allowBackup="true"
android:fullBackupContent="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Pos">
<activity
android:name=".ui.views.main.MainActivity"
android:theme="@style/Theme.Pos.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private var adapter: NfcAdapter? = null
private var pendingIntent: PendingIntent? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
adapter = NfcAdapter.getDefaultAdapter(this)
pendingIntent = PendingIntent.getActivity(this,Intent(this,javaClass).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),0)
}
override fun onResume() {
super.onResume()
adapter?.enableForegroundDispatch(this,pendingIntent,null,null)
}
override fun onPause() {
super.onPause()
adapter?.disableForegroundDispatch(this)
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
val rawMessages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)
Log.d("NFC_NDEF_MESSAGES",rawMessages.toString())
Log.d("NFC_NDEF_ACTION",intent.action.toString())
}
}
Logcat 消息
带有 Kitkat 的 MobiPrint 设备:
NFC_NDEF_MESSAGES:null
NFC_NDEF_ACTION:android.nfc.action.TAG_DISCOVERED
S7 Active with Marshmallow:
NFC_NDEF_MESSAGES:[Landroid.os.Parcelable;@6405e69
NFC_NDEF_ACTION:android.nfc.action.NDEF_DISCOVERED
Kitkat 不支持 NDEF 吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)