7

NFCタグからデータを読み取るための近距離無線通信に取り組んでいます。作成したアプリケーションをテストするためのNFC 対応の Android モバイルと NFC タグがありません。

インテント フィルターを使用してアプリを起動できるかどうかを知りたい(デバイスから NFC タグが検出されたと仮定する必要があります)

私のマニフェストスニペット:

 <activity
        android:name=".ServerActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />

            <category android:name="android.intent.category.DEFAULT" />

            <data
                android:host="abc.com"
                android:pathPrefix="/aaap"
                android:scheme="http" />
        </intent-filter>
    </activity>

私の活動スニペット:

@Override
protected void onNewIntent(Intent intent) {
    if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
        Toast.makeText(getApplicationContext(), "ACTION_TAG_DISCOVERED",
                Toast.LENGTH_LONG);
        Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    }
}
4

3 に答える 3

1

NFCに関するいくつかの調査の後、NFC対応デバイスなしでNFCタグを読み書きできることがわかりました..しかし、答えはとても簡単です..インテントで遊んでいるだけです:

NFC を呼び出すには、このスニペットを呼び出す必要があります。

    final Intent intent = new Intent(NfcAdapter.ACTION_TAG_DISCOVERED);
    intent.putExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, "Custom Messages");
    startActivity(intent);

また、以下のようなマニフェスト ファイルを介してアクティビティを Android システムに登録する必要があります。

マニフェスト.xml

 <activity
        android:name="TagViewer" >
        <intent-filter>
            <action android:name="android.nfc.action.TAG_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
 </activity>

同じアクションを使用する複数のアクティビティがある場合も同様に、目的のアクティビティを起動できるセレクターを取得します。

Activity 内での受信:

タグビューア .java

    if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(getIntent().getAction())) {
        Log.v("NFC Launched","NFC Launched");           
    }

このサンプルはDeveloper Sample Demoにあります。

于 2012-05-02T04:54:41.240 に答える
1

ここでのポイントを完全に見逃しているかもしれませんが、私が理解したことから、基本的には、マニフェストで宣言したレシーバーによって選択されるインテントを発射したいと考えていますよね? このメソッドを使用して、まさにこれを行う非常に単純なテスト アプリをセットアップしてみましたか?sendBroadcast(...)

Intent exampleIntent = new Intent("android.nfc.action.NDEF_DISCOVERED");
sendBroadcast(exampleIntent)

必要に応じて、追加のデータを追加できIntentます。

于 2012-04-27T09:01:07.613 に答える
0

オープン NFC をご覧ください。Android シミュレーターに接続すると便利な NFC シミュレーターがありますAndroid で使用したことはありませんが、BlackBerry シミュレーターで使用したことがあります。

編集:
Android ICS の最終バージョン 4.4.1 がリリースされました。

于 2012-04-27T08:54:08.930 に答える