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創造了我的問題。誰能幫忙?
你在哪裏調用'MainActivity.enableForegroundMode()'?發佈該代碼。還要解釋當您按下導致掛起的BACK按鈕時您所處的Activity。 –
你應該在onResume方法中的'工作'。像這樣在這裏https://code.google.com/p/ndef-tools-for-android/source/browse/ndeftools-util/src/org/ndeftools/util/activity/NfcDetectorActivity.java – ThomasRS
該方法的onResume有enableForegroundMode()。該計劃應該回到當我按下後退按鈕的主要活動,雖然我不知道它是否工作這樣... – user2609825