2013年4月24日水曜日

AndroidでICカード NFCタグを読み込み


会社で、開発用にNexus7を買ったのは実は、NFCタグを読み込みたかったのです。
(他の理由もありますが。)

http://www.atmarkit.co.jp/ait/articles/1211/27/news072.html

からサンプルコードを頂き、コンパイル&GOとしてみたところ、
[2013-04-24 00:46:27 - NfcDiscover] No Launcher activity found!
[2013-04-24 00:46:27 - NfcDiscover] The launch will only sync the application package on the device!
え?どういうこと?しばし悩むこと小一時間。
通常は、
<intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
ですが、これがなくてactivityが見つからないし、アイコンも登録されない。ただし設定-アプリのリスト中には存在している。

The launch will only sync the application package on the device!
=> ランチャーは、デバイスの同期で起動って書いてある。英文を読めば良かったのですね。
もう、一行目のNo Launcher で全て読み飛ばしてた!
そういうことです。これで問題なかったのです。

ということで、ICOCAカードをNexus7の背面上部に合わせると反応しました。


手持ちのICカードを調べてみると。
  1. ICOCA                       NfcF
  2. 京都ぷらすOSAKA PiTaPa NfcF
  3. JAL MILEAGE BANK        NfcF
  4. 運転免許証                 IsoDep/NfcB


となっていました。運転免許証 は3月に更新したばかりでICカードになってました。^^


2 件のコメント:

  1. 初めまして。
    私も同様の問題に直面しました。
    それで本サイトの解決策を試したところ、
    「このアプリはインストールされていません。」
    と表示されるようになりました。
    このような症状とは直面しませんでしたか?
    それとも改善した部分はその他にもあるのでしょうか?

    返信削除
  2. サンプルコードそのままで動作しました。

    尚、ランチャーにアイコンを登録するためには、
    AndroidManifest.xml
    は、以下のようにしました。

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.picolix.nfc.reader"
    android:versionCode="1"
    android:versionName="1.0" >

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

    <uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="17" />

    <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    >
    <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    >

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

    <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data
    android:scheme="nfcctl"
    android:host="jp.co.seiwatec.iccard"
    android:pathPrefix="/order" />

    </intent-filter>

    </activity>


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

    返信削除