[英]Android NFC scanner issue
我正在为我的Android
应用程序开发NFC
扫描功能。 它适用于我的所有设备,除了运行Android 4.4.2
的Samsung 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.