在某些Android设备上没有捕获NFC意图

时间:2013-11-06 14:53:44

标签: android-intent nfc

我正在创建将数据写入标记的应用。 A没有添加任何意图过滤器,因为不必在Tag发现的意图上触发应用程序。 主要问题是它在Note3上工作正常,但在SGS4上,一些默认应用程序被打开,应用程序无法捕获NFC意图。 这是我的示例代码:

public void onNewIntent(Intent intent) 
{
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) 
{
    Tag discoveredTag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    writeSomeStuffToTag(discoveredTag);
}   
}

private void writeSomeStuffToTag(Tag tag) throws IOException,FormatException {
    Ndef ndefTag = Ndef.get(tag);
    int size =  Integer.parseInt(tagSize.getText().toString());
    byte[] bytes = new byte[1024 * size];
    NdefRecord dataToWrite = NdefRecord.createMime("Application/com.android.nfctest", bytes);
    ndefTag.connect();
    ndefTag.writeNdefMessage(new NdefMessage(dataToWrite));
    ndefTag.close();
    }

我的xml

<uses-sdk
    android:minSdkVersion="12"
    android:targetSdkVersion="18" />

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:keepScreenOn="true"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.nfctest.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>
</application>

1 个答案:

答案 0 :(得分:0)

为了检测NFC事件(Android应用程序记录触发的事件除外),您需要注册这些意图。您可以通过清单(请参阅here)或通过前台调度系统(请参阅here)来执行此操作。