繁体   English   中英

Android NFC扫描仪问题

[英]Android NFC scanner issue

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

当我扫描NFC tag ,它会抛出此错误:

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轻松找到的应用程序配合使用。

你知道为什么会触发这个错误吗?

谢谢你的帮助。

如错误所述,您的活动不会导出。 默认情况下,只有具有<intent-filter>的活动才会导出活动,而您的活动则不会。

现在, 为什么它需要导出,我不能说,因为我要么想要你有一些<intent-filter> 或者在你的NFC设置中使用PendingIntent 后者允许其他进程启动您的活动,即使它未导出。

解决方法是将android:exported="true"到清单中的<activity>元素。 这使得此活动可以公开访问,因此您可能希望将其考虑在内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM