android - NFC广播问题

原文 标签 android broadcast nfc

我真的读了10到20个关于这个的话题,但不幸的是我没有成功。我的接收器可以捕获广播,但仅当我从我的应用程序通过sendBroadcast(intent)发送时。我要它从NFC适配器捕获广播。有人把NFC标签放在我的设备附近,然后我的应用程序应该启动或显示在浏览菜单中,但这并没有发生。即使我的应用程序启动,我把NFC标签放在设备附近,它也无法捕捉它,在浏览菜单中,我看到其他应用程序,这可以。
我的接收者:

public class SomeBroadcastReceiver extends BroadcastReceiver {
private final String TAG = "SomeBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Got intent: " + intent);    
}
}    

以及我的清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.nfc">
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name">

<receiver android:enabled="true" android:name=".broadcast.SomeBroadcastReceiver">
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
        <category android:name="android.intent.category.DEFAULT" />

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

        <action android:name="android.nfc.action.TAG_DISCOVERED"/>
</intent-filter>        
</receiver>

<activity android:name=".simulator.FakeTagsActivity"
    android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name="TagViewer"
    android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
      <action android:name="android.nfc.action.TAG_DISCOVERED" />
      <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>        
</activity>

</application>
<uses-sdk android:minSdkVersion="10" />
<uses-feature android:name="android.hardware.nfc" android:required="true" />

在假动作中我有这样的台词:
Intent exampleIntent = new Intent("android.nfc.action.NDEF_DISCOVERED"); sendBroadcast(exampleIntent);
当应用程序记录它们时,我的接收器捕捉到意图,所以我认为接收器很好,但也许我错过了清单中的一些东西?是否有捕捉全球广播的特别许可?或者我应该开始服务还是什么?

最佳答案

不能用广播接收器捕获这些意图,因为只有活动才能接收nfc意图。您可以在NFC guide中找到有关它的更多信息。

相关文章:

java - 在android中的内部广播

android - Android Firebase身份验证:联合Google登录在Oreo中不起作用

android - 如何以编程方式检查图像(PNG,JPEG)在Android中是否已损坏或不受支持?

android - 在v23上找不到Symbol Manifest.permission.WRITE_EXTERNAL_STORAGE

java - 对于TextView类型,未定义方法getBytes()

java - 除了我自己的应用程序如何将Android意图传递给任何人?

android - NFC服务无效android.os.DeadObjectException

android - 如何使用自定义对象打包哈希集

c - 如何忽略自己的广播udp数据包

javascript - Websockets-NodeJS。是否可以向所有已连接的客户端(从服务器)广播消息,而无需先向客户端发送客户端消息