我在我的应用程序中包括了导航组件
,这基本上意味着我有一个导航活动
和多个显示我的视图和数据的片段。该应用程序能够读取身份证上的NFC标签。
我遵循Android开发者的实施指南,加入了NFC标签读取功能,在他们的示例中,他们在
AndroidManifest
中编辑活动,并在活动中启用
ForegroundDispatcher
。由于我的应用程序中基本上只有一项活动,因此NFC功能可用。
我正在使用
setIntent(intent)
将传入的intent
委托给我的片段。只有本应与NFC一起使用的片段处理该意图,而其他片段则忽略它。
问题是,当我把NFC卡靠近手机时,手机开始振动,因为它识别到了NFC设备。这发生在每个片段中,是不必要的行为。
对此我能做些什么,还是我被这种行为所困扰?我读了一些关于在片段中启用
前台Dispatcher
的文章,但是答案几乎总是在我的活动中处理它,并且函数也需要一个活动。
不要使用Foreground Dispatcher
(除非您真的需要在API 19之前执行NFC),而是使用更新更好的enableReaderMode方法。
声音是由系统NFC应用程序生成的,使用enableForegroundDispatch
您无法控制声音,而且enableForegroundDispatch
会导致应用程序暂停以读取NFC标签的不良副作用,有时可能不可靠,尤其是在写入NFC标签时。
使用enableReaderMode,您可以通过标志\读取器\否\平台\声音标志来控制系统NFC应用程序是否发出声音。
因此,当在应用程序中的另一个线程中调用onTagDiscovered
方法时,您的设计必须有所改变。当发现NFC标记时,该线程必须将数据传递给片段(因为它不能直接与UI线程交互)。一种可能的方法是活动中的onTagDiscovered
方法在共享视图模型中设置一个值,然后对该值感兴趣的片段“观察”该值以进行更改,并根据该值做出反应,包括发出声音和振动。
enableReaderMode
的完整示例位于https://stackoverflow.com/a/64921434/2373819
注意:仅在片段中启用ForeGroundDispatch
NFC是一个坏主意,因为当显示NFC标记时,系统NFC应用程序可能仍然会发出声音,并且由于片段未运行,您的应用程序可能无法处理事件,因此系统NFC应用程序也可能会在您的应用程序上显示自己的屏幕。
我在这里找到了一些关于使用Android阅读NFC标签的最近帖子。我得到的结论是,执行NFC读取动作会触发一个分离的意图。 那么第一个问题:在我的清单中列出意图过滤器是否必要? 我认为这是没有必要的,因为我不想推出我的应用程序通过NFC标签事件,对吗? 第二个问题:我如何保持我的NFC阅读逻辑/功能与我的app/活动相关? 例如,在iOS中,在VC中需要时有一个简单的NFC会话。
在我的应用程序中,我有一个显示某种级别的列表视图。 我用资产中的一个文件填充listview。我在资产中的文件如下所示: 我的listview显示级别,当我单击listview的某个项目转到另一个活动时,“转到下一个活动”也会显示我的问题和选项。一切正常,我的问题是,当在第二个活动中按后退按钮转到第一个活动时,第一个活动再次启动,我的onCreate方法再次运行,我的listview项增加。(例如
我有两项活动。我想用第一个活动(如)读卡,第二个活动写卡。因为在发现卡时,活动需要处于活动状态。因此,我对这两项活动都使用了以下设置: 然而,我的问题是,当我在第二个活动中扫描NFC卡时,手机会显示第一个和第二个活动的意向选择器。 那么,当我在第二个活动(反之亦然)中时,如何通过代码禁用第一个活动的intent过滤器? 这是完整的AndroidManifest文件:
在我的应用程序中,我使用了一个活动和两个片段。该应用程序使用带有容器的布局,因此片段是通过事务添加的。第一个片段包含列表视图,另一个片段包含列表视图项的详细视图。两个片段都使用setRetainInstance(true)。片段是通过替换事务添加的,并设置了addToBackStack(null)。列表片段包含一个实例变量,其中包含列表的一些信息。现在我正在切换到详细并按回,实例变量为null。我
并且显示错误 正如您所看到的,当我单击Button时,我想从CurrentWeatherFragment调用一个方法,从ForecastWeatherFragment调用一个方法。
我有两个API,一个是授权,另一个是创建交易。当用户授权生成访问令牌时。然后我们传递生成的令牌和用户名来创建事务。 我希望这个功能测试能够使用JMeter实现自动化。因此,为此,我有用户.csv文件,其中包含用户名和密码以及另外两个CSV作为创建交易1.csv,创建交易2.csv其中这两个CSV包含记录。因此,我希望用户 1 读取创建事务 1.csv和用户 2 读取创建事务 2.csv 任何想法,