2013-04-11 2 views
-1

내 응용 프로그램으로 끝났지 만 NFC 태그를 누를 때 응용 프로그램이 열리길 원합니다! 내 응용 프로그램에서이 코드를 추가 할 위치를내 안드로이드 응용 프로그램 NFC를 사용하도록 설정하는 방법은 무엇입니까?

  public class MainActivity extends Activity { 
    private static final String TAG = "NFCReadTag"; 
    private NfcAdapter mNfcAdapter; 
    private IntentFilter[] mNdefExchangeFilters; 
    private PendingIntent mNfcPendingIntent; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
     mNfcAdapter = NfcAdapter.getDefaultAdapter(this); 
     mNfcPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, 
        getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP 
        | Intent.FLAG_ACTIVITY_CLEAR_TOP), 0); 
     IntentFilter smartwhere = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); 
     smartwhere.addDataScheme("http"); 
     smartwhere.addDataAuthority("www.smartwhere.com", null); 
     smartwhere.addDataPath(".*", PatternMatcher.PATTERN_SIMPLE_GLOB); 
     mNdefExchangeFilters = new IntentFilter[] { smartwhere }; 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 
    @Override 
    protected void onResume() { 
     super.onResume(); 
     if(mNfcAdapter != null) { 
       mNfcAdapter.enableForegroundDispatch(this, mNfcPendingIntent, 
        mNdefExchangeFilters, null); 
       if (!mNfcAdapter.isEnabled()){ 
      LayoutInflater inflater = getLayoutInflater(); 
      View dialoglayout = inflater.inflate((Integer) R.layout.nfc_settings_layout,(ViewGroup) findViewById(R.id.nfc_settings_layout)); 
      new AlertDialog.Builder(this).setView(dialoglayout) 
       .setPositiveButton("Update Settings", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface arg0, int arg1) { 
            Intent setnfc = new Intent(Settings.ACTION_WIRELESS_SETTINGS); 
            startActivity(setnfc); 
         } 
       }) 
       .setOnCancelListener(new DialogInterface.OnCancelListener() { 
        public void onCancel(DialogInterface dialog) { 
         finish(); // exit application if user cancels 
       }      
       }).create().show(); 
       } 
     } else { 
       Toast.makeText(getApplicationContext(), "Sorry, No NFC Adapter found.", Toast.LENGTH_SHORT).show(); 
     } 
    } 
    @Override 
    protected void onPause() { 
     super.onPause(); 
     if(mNfcAdapter != null) mNfcAdapter.disableForegroundDispatch(this); 
    } 
    @Override 
    protected void onNewIntent(Intent intent) { 
     super.onNewIntent(intent);    
     if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { 
       NdefMessage[] messages = null; 
       Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 
       if (rawMsgs != null) { 
        messages = new NdefMessage[rawMsgs.length]; 
        for (int i = 0; i < rawMsgs.length; i++) { 
         messages[i] = (NdefMessage) rawMsgs[i]; 
        } 
       } 
       if(messages[0] != null) { 
        String result=""; 
        byte[] payload = messages[0].getRecords()[0].getPayload(); 
        // this assumes that we get back am SOH followed by host/code 
        for (int b = 1; b<payload.length; b++) { // skip SOH 
         result += (char) payload[b]; 
        } 
        Toast.makeText(getApplicationContext(), "Tag Contains " + result, Toast.LENGTH_SHORT).show(); 
       } 
     } 
    } 
} 

질문은 자바 코드는 나를

난 그냥 여기 mainfest

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

에 추가됩니다 도와주세요입니까?

답변

관련 문제