2012-03-19 20 views
1

アプリのボタンをクリックすると、NFCタグを読み取ろうとしています。現在、デフォルトモード(Nexus端末にインストールされているタグアプリ)でタグを検出できます。私は私のタグを起動したい、それを通して、私はAndroid NFCスタートアップ画面

public class NFC_button extends Activity 
{ 

protected IntentFilter ifilter ; 
private NfcAdapter adapter; 

private BroadcastReceiver receiver = new BroadcastReceiver() 
{ 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 

     if(NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) 
     { 
      Parcelable[] messages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 
      NdefMessage[] ndefmessages; 
      if(messages != null) 
      { 
       ndefmessages = new NdefMessage[messages.length]; 

       for(int i = 0;i<messages.length;i++) 
       { 
        ndefmessages[i] = (NdefMessage)messages[i]; 
       } 



      } 

     } 

    } 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    adapter=NfcAdapter.getDefaultAdapter(this); 


    ifilter = new IntentFilter(); 
    ifilter.addAction("android.nfc.action.NDEF_DISCOVERED"); 
    ifilter.addCategory("android.intent.category.LAUNCHER"); 

} 



@Override 
protected void onResume() { 
    registerReceiver(receiver, ifilter); 

super.onResume(); 
} 




} 

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

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

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

<application 

    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".NFC_ExampleActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".NFC_button"> 

     </activity> 

</application> 

答えて

1

すべて私がBroadcastReciverは、タグを読み取るための正しい方法だとは思わないの最初の活動チューを表示するために取得することはできませんよ。

android.intent.category.LAUNCHER 

が、適切なカテゴリは次のようになります。:

android.intent.category.DEFAULT 

私はあなたがマニフェストにインテントフィルタを追加することを示唆していると私は見る他の間違いは、あなたのインテントフィルタがカテゴリを持っているということですあなたはこのようにタグをタッチすると開始したいアクティビティ:

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

、あなたがNFC_buttののonCreateにBroadcastReceiverのonReceive方法を持っているコードを移動オンアクティビティ。

BroadcastReceiverを使用する特別な理由がない場合、これはタグの読み取りに関する問題を解決します。

+0

BroadcastReceiverがタグを読み取る正しい方法だと思わなかった理由を説明できますか?私のユースケースを考えてみましょう:私はタグにデータを書きます。私は、ユーザーがデータを準備し、タグが検出されたときに書き込まれるデータのために、デバイスの近くにタグを置きたいと思います。私はユーザーが別のアクティビティにいるので、自分のデータを書き込む準備ができているので、(UIを変更するために)アクティビティを開始したくありません。 – wsgeorge