0

私はまだAndroidプログラミングの概念に慣れていません。私は現在、NFCタグを読み書きできるアプリを開発しようとしています。

ただし、Google 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 が私に問題を引き起こしているようです。誰でも助けることができますか?

4

1 に答える 1

0

確認のために、onPause でのフォアグラウンド ディスパッチの無効化もメイン アクティビティで設定しましたか? 適切に無効にしないと、戻ったときに再度有効にすることはできません ([戻る] ボタン)。

@Override
protected void onPause()
{
mNfcAdapter.disableForegroundDispatch(this);
    super.onPause();
}
于 2013-09-05T14:11:27.477 に答える