NfcAdapter.getDefaultAdapter(this) 返回 null 但 NFC 可以工作

2024-04-08

我的应用程序在后台和前台使用 NFC 读取。对于用户信息,我在活动中使用 CountDownTimer(120 * 1000, 5 * 1000) 和方法 onTick(long l) 每 5 秒检查一次 NFC 状态。有时(在 Android 4.2.2 上,我的客户说,这从来没有发生在我身上)NfcAdapter.getDefaultAdapter(BaseActivity.this) 返回 null,但后台和前台 NFC 读取仍然有效!关闭和打开没有帮助。重新安装有帮助。

通过清单读取 BG:

<activity
            android:name=".activity.NfcReaderActivity"
            android:launchMode="singleTask"
            android:screenOrientation="portrait">

            <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="http" />
                <data android:scheme="https" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.nfc.action.TECH_DISCOVERED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

            <meta-data
                android:name="android.nfc.action.TECH_DISCOVERED"
                android:resource="@xml/nfc_tech_filter" />
        </activity>

FG 通过意图读取:

IntentFilter ndef = new IntentFilter();
ndef.addAction(NfcAdapter.ACTION_TECH_DISCOVERED);
ndef.addCategory(Intent.CATEGORY_DEFAULT);

try {
    ndef.addDataType("*/*");
} catch (IntentFilter.MalformedMimeTypeException e) {
    throw new RuntimeException("fail", e);
}

mNfcAdapter = NfcAdapter.getDefaultAdapter(this.mActivity);
mNfcPendingIntent = PendingIntent.getActivity(
        this.mActivity, 0,
        new Intent(this.mActivity, this.mActivity.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
        0
);
mNfcFilters = new IntentFilter[] {
        ndef
};
mNfcTechLists = new String[][] { new String[] {
        // White solid cards
        NfcA.class.getName()
} };

if (mNfcAdapter != null) {
    mNfcAdapter.enableForegroundDispatch(
            mActivity,
            mNfcPendingIntent,
            mNfcFilters,
            mNfcTechLists
    );
}

NfcAdapter 似乎有库存​​或冻结。有人有同样的经历吗?问题可能出在哪里?


经过一些测试我有了新的观察结果。仅在重新启动后才会发生这种情况。我虽然我的应用程序启动了两次并且存在一些线程死锁,但事实并非如此。如果我启动 CountDownTimer (在 onCreate 方法中调用)有一些延迟(3 秒或更多秒),它就会工作并且 getDefaultAdapter 不为空。如果启动延迟太低(2 秒或更少),我在日志中发现此消息:“E/NFC:无法检索 NFC 服务”,然后 getDefaultAdapter 返回 null,直到我重新安装我的应用程序。

在执行 CountDownTimer 之前的短暂延迟(也许更好的是 Timer.schedule(...,delay,interval))是临时解决方案,但如果有人知道最好的解决方案是什么,请告诉我。


可能它是在模拟器上使用的,而在模拟器上您无法使用 NFC 执行任何操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NfcAdapter.getDefaultAdapter(this) 返回 null 但 NFC 可以工作 的相关文章

  • 已发布的 Flutter 应用程序在启动时崩溃

    编辑 此问题的解决方案是将您的 flutter 版本升级到较新的 dev 版本 then 1 7 0 您还可以上传单独的 APK 版本 但我个人不喜欢这个选项 请确保您没有从 flutter github 开发存储库下载 错误的构建 因为那
  • Android中如何使用洪水填充算法?

    我是Android编程新手 最近尝试编写一个简单的应用程序 仅供练习 在这个中 我想在用户点击时为图像着色 但我不知道如何开始 我读过不同的主题 其中提到使用 洪水填充 算法 我在网上找到了它 但我不知道如何将它放入我的简单应用程序中 我找
  • 使用 Google Places Autocomplete API 的 REQUEST_DENIED 响应

    我正在开发 Android 应用程序 它使用谷歌的地点自动完成 API 当尝试点击以下网址时 我得到的答复如下 预测 状态 REQUEST DENIED 我从下面的链接获得了 API 密钥Google API 控制台 http code g
  • Android Studio - 错误:未捕获翻译错误:com.android.dx.cf.code.SimException:本地 0001:无效

    我刚刚使用 Android Studio 设置了一台新计算机 并从 bitbucket 导入了我的项目 问题是我现在在尝试构建项目时遇到此错误 信息 Gradle 任务 app clean app generateDebugSources
  • 如何将 EditText 传递给另一个活动?

    Intent intent new Intent this Name class intent putExtra key et getText toString startActivity intent Intent intent getI
  • React Native Android 发布 apk 是调试,而不是发布

    我有一个现有的 Android 应用程序 我已根据以下内容将 React Native v0 30 活动添加到项目中docs http facebook github io react native releases next docs i
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • Android Studio - 如何关闭“单词‘word’中的拼写错误?”

    当命名变量或给出字符串参数时 Android Studio 似乎对我如何标记事物有问题 有办法把它关掉吗 是的 打开Preferences gt Editor gt Inspections gt Spelling gt 关闭Typo并按OK
  • android 确定设备是否采用从右到左的语言/布局

    有没有办法确定设备是否使用从右到左的语言 例如阿拉伯语 而不是从左到右的语言 英语 与较旧的 API 级别 低至 10 兼容的东西是必要的 SOLUTION 我最终在接受的答案中使用了 xml 方法 接下来 我还添加了此处指示的代码 以应对
  • 从多个选项卡中的编辑文本字段获取文本

    我正在尝试创建一个使用选项卡作为输入表单的 Android 应用程序 基本上 我希望对其进行设置 以便用户可以在一个选项卡上输入一些信息 然后提交该信息 或者转到另一个选项卡并输入更多信息 然后从两个选项卡提交信息 我正在使用操作栏和片段来
  • Google 移动广告和 Kindle Fire

    我最近用 Google 移动广告替换了 AdMob 库 对此我有一个疑问 广告会出现在 Amazon Kindle Fire 设备上吗 我问这个是因为我知道 Google 移动广告依赖于 Google Play 服务 所以我有点困惑 Goo
  • Android 改变 ImageView / Bitmap 的颜色

    我需要找到一种方法来改变 Android 中位图的颜色 我需要在我的应用程序中平滑地替换 更改椭圆形图像的颜色 具体取决于int价值 我需要类似的东西myValue 5比改变我的图像的颜色RED and if myValue 322将颜色更
  • 在 AppAuth-Android 中注销

    我有一个用JAVA开发的Android应用程序 对于这个应用程序 我使用的是身份服务器4 https github com IdentityServer IdentityServer4作为我的 STS 一切正常 但我找不到任何注销的实现Ap
  • jar 中的 apklib 有什么优点?

    我正在关注这个问题 https stackoverflow com questions 6059502 whats the difference between apklib and jar files但它并没有完全回答我的问题 jar 中
  • ACCESS_BACKGROUND_LOCATION 不适用于低于 Q (29) 的 Android 版本

    我的应用程序面向 Android API 28 根据文档 https developer android com preview privacy location target android 10 我应该要求ACCESS BACKGROU
  • Android:打开和关闭SQLite数据库

    我正在开发Android应用程序 我经常在其中访问本地数据库 该数据库可以从不同的主题访问 因此我遇到了数据库的协调问题 我使用以下open and close method public void open mDb mDbHelper g
  • 在 Android 布局 xml 文件中使用字符串格式参数 [重复]

    这个问题在这里已经有答案了 我在 String xml 文件中定义了一个使用格式参数的字符串 即
  • 更改Android菜单的背景颜色[重复]

    这个问题在这里已经有答案了 我正在尝试将标准浅灰色更改为浅绿色 似乎没有一个简单的方法可以做到这一点 例如 通过 Android 主题 但我找到了一个解决方法 如本页所述 http tinyurl com 342dgn3 http tiny
  • mysqli bind_param 中的 NULL 是什么类型?

    我正在尝试将参数绑定到 INSERT INTO MySQLi 准备好的语句 如果该变量存在 否则插入 null 然后我知道 type variable i corresponding variable has type integer d
  • 通过powershell运行ADB命令

    所以我尝试通过 powershell 脚本运行一些 ADB 命令 这是我正在尝试做的一个简单示例 adb shell echo in adb shell su root echo you are now root ls cd data da

随机推荐

  • json/ld ArticleBody 值内的 Html 标签?

    如果我想创建一个Article https schema org Article schema org 类型使用 json ld 格式 我是否必须将 html 标签放入articleBody的价值 因为我发现如果我使用微观数据 结构化数据工
  • getInputStream() 上的 java.io.FileNotFoundException

    我正在尝试从 URL 获取InputStream 连接响应代码是200 但我遇到了例外FileNotFoundException当我尝试 getInputStream 时 这是我的代码 url new URL http connection
  • 未找到“Google\Cloud\Storage\StorageClient”类

    use Google Cloud Storage StorageClient require DIR vendor autoload php storage new StorageClient 这是我的代码 这里我在 Windows 上安装
  • Keras 看到我的 GPU,但在训练神经网络时不使用它

    Keras TensorFlow 不使用我的 GPU 为了尝试让我的GPU与tensorflow一起工作 我通过pip安装了tensorflow gpu 我在Windows上使用Anaconda 我有nvidia 1080ti print
  • 什么是 RMI 注册表

    什么是 RMI 注册表 它有什么作用 本质上 RMI 注册表是服务器注册其提供的服务的地方 也是客户端查询这些服务的地方 看Java RMI简介 http www javacoffeebreak com articles javarmi j
  • JEdi​​torPane 的 html 中的插入符位置

    JEdi torPane 的 getCaretPosition 方法提供 html 控件的仅文本部分的索引 是否有可能将索引放入html文本中 更具体地说 假设我有一个 html 文本 其中 表示插入符号位置 abcd img src 1
  • 使用 OOP 的闭包方法时如何实现受保护的成员?

    现在我正在使用实施 OOP 的闭包 http lua users org wiki ObjectOrientationClosureApproach在卢阿 下面是一个简短的示例 我的问题发生在尝试实施时stronger heal insid
  • 为什么选择 Eigen 作为 TensorFlow? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 TensorFlow白皮书提到使用了Eigen 是否有关于如何选择 Eigen 的公开解释 它们是在 T
  • 为 Atom feed 创建 XSL

    我正在创建一个小的自定义 XSL 文件来呈现 RSS 提要 内容是基本的 如下 除非源 XML 在提要定义中包含行 xmlns http www w3 org 2005 Atom 否则此方法可以正常工作 我该如何解决这个问题 我对命名空间不
  • 如何让不和谐机器人添加你为好友

    我正在创建一个不和谐机器人 我想将其添加到 DM 组中 这样我就可以保持较低的服务器级别 但是 您无法将不是朋友的人添加到群组 DM 中 有没有办法让不和谐机器人接受好友请求 不可能 机器人帐户无权使用 Discord 的关系端点 这意味着
  • 领事注销“失败”服务

    我有 Consul 在 Consul v0 5 2 版本上运行 服务在 Mesos 中运行 服务不断从一台服务器转移到另一台服务器 有没有办法取消领事中处于 失败 状态的服务 我可以使用此curl 获取处于失败状态的服务列表 curl ht
  • 具有多个计数子查询的 SELECT 查询

    我刚刚为报告编写了这个查询 但我最初编写它时没有在每个子查询上使用日期范围过滤器 但这没有用 所以我将它添加到每个子查询中 这很有效 但我真的不喜欢每次都重复它 是否有语法可以更简单地完成同样的事情 SELECT Count r id AS
  • 聚合、组合、关联、直接关联

    我正在复习面向对象编程方面的知识 在类之间的关系主题下 我遇到了一些对我来说有点模糊的关系 我知道依赖项 uses a 和继承 is a 但我对聚合 组合 关联和直接关联有点不熟悉 另外 其中哪一个是 has a 关系 有些可以与关联互换使
  • MongoDB - 使用全文搜索搜索单词和短语时的逻辑 OR

    我之前问过一个相关问题 根据发帖者的建议 创建了这个新问题作为后续问题 MongoDB 全文搜索 匹配单词和精确短语 https stackoverflow com questions 28368883 mongodb full text
  • 页面加载时,angularjs ng-cloak 不起作用

    我是 AngularJS 的新手 并试图解决在评估 ng if 条件之前显示某些 HTML 代码的问题 我正在使用 ng cloak 正如许多其他堆栈溢出 URL 中提到的那样 但它仍然对我不起作用 我正在尝试加载默认图像 如果 URL 上
  • 每个模块必须有唯一的路径

    我已经使用 GIT 从版本控制导入了一个项目 导入 同步等等之后 它给了我这个错误 错误 模块 LinkedCraftMobile linkedcraft android 指向文件系统中的同一目录 每个模块都必须有唯一的路径 我想要一个可以
  • 如何将数据表存储在缓存中以便重复使用?

    在我的应用程序中 我使用了通用处理程序来处理请求 我想要一种机制 如果第一次请求到达处理程序 它会向服务器发出请求 然后缓存整个数据表 因此对于即将到来的请求 如果下一个请求的产品代码存在于缓存的数据表中 则它不应该去再次获取数据的服务器
  • Net Core自定义用户属性

    我在 NET Core 项目中使用默认授权 我想检查用户是否是管理员 因此在 ApplicationUser cs 模型中我添加了以下内容 public class ApplicationUser IdentityUser public b
  • 实体框架中的 FirstOrDefault 调用已缓存,但数据库已更改

    我有一个奇怪的问题 我以前没有遇到过 我使用实体框架来检索我的记录 我有以下电话 var dbOrganisation repository DbOrganisation FirstOrDefault c gt c Id id 我预计不会缓
  • NfcAdapter.getDefaultAdapter(this) 返回 null 但 NFC 可以工作

    我的应用程序在后台和前台使用 NFC 读取 对于用户信息 我在活动中使用 CountDownTimer 120 1000 5 1000 和方法 onTick long l 每 5 秒检查一次 NFC 状态 有时 在 Android 4 2