2016-09-21 11 views
-2

내 앱을 컴파일/빌드하면 오류없이 내 APK가 생성됩니다. 또한 Android Studio에는 오류 알림이 없습니다. 따라서 앱이 작동 할 것으로 기대합니다. 그러나 NFC 태그를 검색하는 즉시 앱을 설치하고 열면 "불행히도 BMT_Admin이 작동을 멈췄습니다."라는 오류 메시지가 나타납니다.내 응용 프로그램은 컴파일되고 정상적으로 빌드되지만 예기치 않게 종료됩니까?

내가하려는 것은 "페이로드"라는 태그에 외부 레코드를 쓰고 나중에 스캔하여 호출 할 수있는 태그에 AAR (Android Application Record)을 쓰는 것뿐입니다. 내가 사용하는 코드는 다음과 같습니다

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 

    if(intent.hasExtra(NfcAdapter.EXTRA_TAG)) 
    { 
     Toast.makeText(this, "NFC Scan", Toast.LENGTH_SHORT).show(); 
     Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 

     byte[] payload = "my string_tag1".getBytes(); 

     NdefRecord[] ndefRecords = new NdefRecord[0]; 
     ndefRecords[0] = NdefRecord.createExternal("nfctutorials", "externaltype", payload); 
     ndefRecords[1] = NdefRecord.createApplicationRecord("com.example.myapp"); 
     NdefMessage ndefMessage = new NdefMessage(ndefRecords); 
     writeNdefMessage(tag, ndefMessage); 
    } 
} 

I가 정확하지 내가 태그를 스캔하려고하면 오류를 던지고 내가 여기서하고있어 뭔가가 있으리라 믿고있어. 그러나 나는 그게 무엇인지 모릅니다.

+4

"나는 앱이 작동 할 것으로 기대합니다."- ** 많은 ** 종류의 버그가 컴파일 타임에 발견되지 않습니다. "불행히도 BMT_Admin이 작동을 멈췄습니다"라는 오류 메시지가 나타납니다. "- LogCat을 사용하여 충돌과 관련된 Java 스택 추적을 검사하십시오. https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped- 어떻게 할 수 있을까요?이 – CommonsWare

답변

0

야생 도움말 이외의 실제 도움이 필요하면 오류 메시지 (즉, ADB 로그의 스택 추적)와 관련 코드 부분을 밝혀야합니다. 게다가

, 당신은 당신의 질문에이 코드에서, 가장 큰 원인이 줄을이

NdefRecord[] ndefRecords = new NdefRecord[0]; 

될 수있다, 당신은 빈 배열을 만들 수 있습니다.

ndefRecords[0] = NdefRecord.createExternal("nfctutorials", "externaltype", payload); 
ndefRecords[1] = NdefRecord.createApplicationRecord("com.example.myapp"); 

이 분명히 0 년부터 ArrayIndexOutOfBounds 예외로 이어질 것입니다 1은 빈 배열의 끝을지나이다 : 그러나 다음 두 줄에 당신이 존재하지 않는 인덱스 0과 1에 액세스하려고합니다.

결과적, 두 배열 요소를위한 공간을 할당하기 위해

NdefRecord[] ndefRecords = new NdefRecord[2]; 

에 배열 할당을 변경해야한다.

+0

고마워요 마이클 ... 전 아주 새롭기 때문에 의견과 제안에 감사드립니다 !!! 나는 배열 배열에있는 0을 완전히 간과했다 ... 그것은 항상 눈의 또 다른 세트를 가지고있는 것을 돕는다. 내가 이것을 시도하고 다시 게시하기 전에 스택 추적을 통해 이동합니다. – Leo