2013-07-23 39 views
0

我對android編程的概念還很陌生。我目前正在嘗試開發一款能夠讀取,寫入NFC標籤的應用程序。意圖傳遞給新的活動後,NFC應用會一直掛着

但是我似乎無法找到正在發生在我的谷歌Nexus上的懸掛問題,也許一些有經驗的開發者可以指出我對這個問題的一些看法。

首先,我有一個主要活動,它有一個掛起的意圖,一旦nfc標籤進入範圍內發射。

//main activity 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //blank tag intent 
    blankIntent = new Intent(MainActivity.this, DisplayBlankTagActivity.class); 
    //ndef tag intent 
    homeIntent = new Intent(MainActivity.this, DisplayHomeActivity.class); 

    //initialize nfc 
    NfcManager manager = (NfcManager)this.getSystemService(Context.NFC_SERVICE); 
    nfcAdapter = manager.getDefaultAdapter(); 
    nfcPendingIntent = PendingIntent.getActivity(this, 0, 
     new Intent(this, this.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); 
} 

public void onNewIntent(Intent intent) { 
    // if tag is written 
    if(NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { 
     startActivity(homeIntent); 
    } 
    // if blank tag 
    else if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { 
     startActivity(blankIntent); 
    } 
} 

public void enableForegroundMode() { 
    //Intent filters 
    IntentFilter nDefTag = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); 
    try { 
     nDefTag.addType("text/plain"); 
    }catch(MalformedMimeTypeException e){} 
    IntentFilter blankTag = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED); 
    IntentFilter[] tagFilters = new IntentFilters[]{nDefTag, blankTag); 
    nfcAdapter.enableForegroundDispatch(this, nfcPendingIntent, tagFilters, null); 
} 

public void onResume() { 
    super.onResume(); 
    enableForegroundMode(); 
} 

我的空白標記意圖工作正常,它只是一個簡單的編輯框填寫表單。 我的家意圖視圖只是一個帶有3 x 3圖像按鈕和一些奇特圖片的GridView。 掛起發生在應用程序檢測到ndef標籤時,它能夠加載家庭意圖內容,但是當我按下Nexus上的後退按鈕時,掛起在那裏。這似乎在(堆)被卡住

BinderProxy.transact 
INfcAdapter$Stub$Proxy.setForegroundDispatch 
NfcAdapter.enableForegroundDispatch 
MainActivity.enableForegroundMode 

好像enableForegroundDispatch創造了我的問題。誰能幫忙?

+0

你在哪裏調用'MainActivity.enableForegroundMode()'?發佈該代碼。還要解釋當您按下導致掛起的BACK按鈕時您所處的Activity。 –

+0

你應該在onResume方法中的'工作'。像這樣在這裏https://code.google.com/p/ndef-tools-for-android/source/browse/ndeftools-util/src/org/ndeftools/util/activity/NfcDetectorActivity.java – ThomasRS

+0

該方法的onResume有enableForegroundMode()。該計劃應該回到當我按下後退按鈕的主要活動,雖然我不知道它是否工作這樣... – user2609825

回答

0

只是爲了檢查,你有onPause禁用前臺調度也設置在mainactivity?如果您沒有正確禁用它,您將無法在返回時重新啓用(後退按鈕)。

@Override 
protected void onPause() 
{ 
mNfcAdapter.disableForegroundDispatch(this); 
    super.onPause(); 
} 
相關問題