2011-05-06 5 views
1

저는 첫 번째 목표가 mifare 태그에서 uid 태그를 얻는 NFC 용 앱을 만들고 있습니다. 태그 버튼을 누르면 내 activvity는 tagID를 가져야하는 두 번째 활동으로 이동합니다.Mifare 클래식 카드의 UID 태그 읽기

리소스 조회 오류가 발생합니다. 나는 몇 가지 중대한 실수를하고 있지만 그것을 찾을 수 없다는 것을 알고있다.

도움을 요청하십시오.

이이 나의 활동 한 내 Meanifest 파일

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.chetan.nfc" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="10"></uses-sdk> 
<uses-feature android:required="true" android:name="android.hardware.nfc"></uses-feature> 
<uses-permission android:name="android.permission.NFC"></uses-permission> 


<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:enabled="true"> 
    <activity android:name=".actOne" 
       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="taginfo" android:label="@string/app_name" android:launchMode="standard"> 
     <intent-filter> 
     <action android:name="android.nfc.action.TECH_DISCOVERED"/> 
     <category android:name="android.intent.category.DEFAULT"/>   
     </intent-filter> 
     <meta-data android:resource="@xml/nfc_tech_filter" android:name="@string/nfc_tech_filter"></meta-data> 

    </activity> 

</application> 

</manifest> 

입니다 : 이것은 내 활동

package com.chetan.nfc; 

import java.util.Date; 

import android.app.Activity; 
import android.app.LauncherActivity; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.nfc.NfcAdapter; 
import android.nfc.tech.NdefFormatable; 
import android.os.Bundle; 
import android.os.Parcelable; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class actOne extends Activity { 
/** Called when the activity is first created. */ 

Button tag; 
Intent i; 
TextView tv; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    tag=(Button)findViewById(R.id.Tag); 
    tv=(TextView)findViewById(R.id.textView1); 

    tag.setOnClickListener(new Button.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      i=new Intent(v.getContext(),taginfo.class); 
      startActivity(i); 


     //launchActivity(); 
     } 
    }); 

} 
} 

은 2

package com.chetan.nfc; 

import java.io.IOException; 

import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.content.IntentFilter.MalformedMimeTypeException; 
import android.nfc.NfcAdapter; 
import android.nfc.Tag; 
import android.nfc.tech.MifareClassic; 
import android.os.Bundle; 
import android.os.Parcelable; 
import android.util.Log; 
import android.widget.EditText; 
import android.widget.TextView; 

public class taginfo extends Activity{ 
TextView tv; 
EditText tagIntent; 
Log log; 
IntentFilter mFilters[]; 
String mTechLists[][]; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedState) { 
super.onCreate(savedState); 
setContentView(R.layout.tagdata); 
tagIntent=(EditText)findViewById(R.id.editText1); 
tv=(TextView)findViewById(R.id.textView1); 
tv.setText(getIntent().toString()); 

log.e("before get intetn", ""); 

readTag(getIntent()); 
} 

public void readTag(Intent intent) 
{ 
    //tagIntent.setText(intent.getAction()); 

    PendingIntent mPendingIntent = PendingIntent.getActivity(this, 0, 
      new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); 

    NfcAdapter nfc_adapter=NfcAdapter.getDefaultAdapter(this); 
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED); 

Tag myTag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 
    byte[] tagId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID); 
    tagIntent.setText(""); 
    tagIntent.setText(tagId.toString());  
} 
} 
+0

당신이 오류를 게시 할 수의 UID를 받고있어이 코드

? – Pasha

답변

0

당신은 시뮬레이션하는 경우 귀하의 태그 감지 활동 1을 선택한 다음 적절한 추가 항목을 추가하십시오. 그렇지 않으면 실제 태그를 감지하면 android nfc 서비스가 TECH_DISCOVERED에 대한 의도를 생성하도록합니다.

4

"리소스 조회 오류가 발생했습니다"와 관련된 경우 NFC와 관련이 없습니다. 당신이 태그를 올바르게

. 
. 
. 
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 
Log.d(TAG, "UID: " + bin2hex(tag.getId())); 
. 
. 
. 
//To display the UID 
static String bin2hex(byte[] data) { 
    return String.format("%0" + (data.length * 2) + "X", new BigInteger(1,data)); 
} 
관련 문제