gpt4 book ai didi

java - Android NFC 扫描仪问题

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:28 24 4
gpt4 key购买 nike

我正在为我的 Android 应用程序开发一个 NFC 扫描功能。它适用于我所有的设备,但运行 Android 4.4.2Samsung S4 除外。

当我扫描一个 NFC 标签 时,它会抛出这个错误:

03-04 17:09:34.570: W/ActivityManager(820): Permission Denial: starting Intent { act=android.nfc.action.NDEF_DISCOVERED dat=vnd.android.nfc://ext/android.com:pkg cmp=com.mobile.planning/.NfcDebugActivity (has extras) } from null (pid=-1, uid=10200) not exported from uid 10202
03-04 17:09:34.570: W/ActivityManager(820): Unable to send startActivity intent
03-04 17:09:34.570: W/ActivityManager(820): java.lang.SecurityException: Permission Denial: starting Intent { act=android.nfc.action.NDEF_DISCOVERED dat=vnd.android.nfc://ext/android.com:pkg cmp=com.mobile.planning/.NfcDebugActivity (has extras) } from null (pid=-1, uid=10200) not exported from uid 10202
03-04 17:09:34.570: W/ActivityManager(820): at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1669)
03-04 17:09:34.570: W/ActivityManager(820): at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:977)
03-04 17:09:34.570: W/ActivityManager(820): at com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:4182)
03-04 17:09:34.570: W/ActivityManager(820): at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:252)
03-04 17:09:34.570: W/ActivityManager(820): at com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:192)
03-04 17:09:34.570: W/ActivityManager(820): at android.content.IIntentSender$Stub.onTransact(IIntentSender.java:64)
03-04 17:09:34.570: W/ActivityManager(820): at android.os.Binder.execTransact(Binder.java:404)
03-04 17:09:34.570: W/ActivityManager(820): at dalvik.system.NativeStart.run(Native Method)

显然,这似乎是一个权限错误。这真的很奇怪,因为它确实适用于我的 LG L65 和我的 Samsung ACE 4

在我的 Manifest.xml 中,我添加了以下几行:

<uses-permission android:name="android.permission.NFC"/>
<uses-feature android:name="android.hardware.nfc" />

Activity 声明如下:

<activity
android:name=".NfcDebugActivity"
android:screenOrientation="portrait"
android:launchMode="singleTop"/>

NFC 功能已在每台设备上启用,它适用于您可以在 Play Store 上轻松找到的应用。

您知道为什么会触发此错误吗?

感谢您的帮助。

最佳答案

如错误所述,您的 Activity 未导出。默认情况下,仅当 Activity 具有 <intent-filter> 时才会导出该 Activity ,而你的没有。

现在,为什么需要导出它,我不能说,因为我可能希望你有一些 <intent-filter> 使用PendingIntent作为 NFC 设置的一部分。后者允许其他进程启动您的 Activity ,即使它没有被导出。

解决方法是添加 android:exported="true"<activity> list 中的元素。不过,这使得此 Activity 可公开访问,因此您需要考虑到这一点。

关于java - Android NFC 扫描仪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28859426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com