ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java-Android NFC扫描仪问题

2019-10-28 16:28:04  阅读:211  来源: 互联网

标签:nfc java android


我正在为我的Android应用程序开发NFC扫描功能.它可以在我的所有设备上运行,但在运行Android 4.4.2的Samsung 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和三星ACE 4上使用.

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

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

活动已这样声明:

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

NFC功能已在每台设备上启用,并且可与您可以在Play商店中轻松找到的应用一起使用.

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

谢谢你的帮助.

解决方法:

如错误所示,您的活动未导出.默认情况下,只有具有< intent-filter>而没有活动的活动才被导出.

现在,为什么不能将其导出,我不能说,因为我或者已经希望您有一些< intent-filter>或在NFC设置中使用PendingIntent.后者允许其他进程开始您的活动,即使该活动未导出.

解决方法是将android:exported =“ true”添加到< activity>清单中的元素.但是,这使得该活动可以公开访问,因此您需要考虑到这一点.

标签:nfc,java,android
来源: https://codeday.me/bug/20191028/1953654.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有