タグにデータを書き込むアプリを作成しています。タグが検出したインテントでアプリケーションを起動する必要がないため、A はインテント フィルタを追加していません。主な問題は、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>