我是 android 和 NFC 的新手,并尝试制作一个简单的小 Flutter 中继应用程序,该应用程序采用嵌入在 NFC 标签上的 json 数据并执行所描述的操作。IE:
- 在这个 NFC 贴纸上点击我的手机
- 打开我的颤振应用
- 自动将 json 数据传递给可以读取和执行指令的某个函数。
我的问题是我可以做 #2 或 #3,但不能使用相同的 NFC 扫描。如果我在关闭应用程序的情况下进行扫描,它会打开我的应用程序,但不会在MyApp.build. 如果应用程序已经在前台,它将命中它,但这会限制该值。
NFC 标签(通过NFC 工具)
DATA
{"action" : "Do the thing and you will have the power."}
FORMAT
Media (0x02)
Defined by RFC 2046
TYPE
application/json
AndroidManifest.xml
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/json" />
</intent-filter>
MainActivity.kt
package com.example.package
import io.flutter.embedding.android.FlutterActivity
import android.content.Intent;
import android.os.Bundle;
class MainActivity: FlutterActivity() {
}
main.dart(使用nfc_in_flutter)
import 'package:flutter/material.dart';
import 'package:nfc_in_flutter/nfc_in_flutter.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
var stream = NFC.readNDEF();
stream.listen((NDEFMessage message) {
for (var record in message.records) {
print("Payload: ${record.payload}"); // This works when foregrounded
}
});
return MaterialApp(
title: 'Material App',
home: Scaffold(
appBar: AppBar(
title: Text('Material App Bar'),
),
body: Text("Foo"),
),
);
}
}