2

編集:解決策を見つけました。以下を参照してください

StackOverFlow に関する私の最初の投稿。しかし、私はしばらくの間、この問題について読んでいますが、うまくいく解決策はありません。

私がやりたいことは、次のインテントを登録することです: android.nfc.action.TAG_DISCOVERED

コードで次のことを行っています。

    IntentFilter filter = new IntentFilter();
    filter.addAction("android.nfc.action.TAG_DISCOVERED");
    filter.addCategory("android.intent.category.DEFAULT");
    Log.d(TAG, "Created the new filter");
    reciever = new NFCBroadcastReciever(this);
    Log.d(TAG, "Created the new Broadcast Reciever");
    this.registerReceiver(reciever, filter);
    Log.d(TAG, "Registered new reciever");

BroadCastReciever は次のように定義されます。

public class NFCBroadcastReciever extends BroadcastReceiver {

private Screen screen;
public static String TAG = "NFCBroadcastReciever";

NFCBroadcastReciever(Screen _screen){
    screen = _screen;
}

@Override
public void onReceive(Context context, Intent intent) {

    String action = intent.getAction();
    Log.d(TAG, "Action recieved: "+action);
    if(action != null && NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)){
        paymentScreen.onNewIntent(intent);
    }
}

}

ただし、タグ読み取りから起動されたインテントに対応するアクティビティがないという例外が発生します。アプリケーションの特定の時点でのみ NFC イベントのリッスンを開始できるようにしたいと考えています。

よろしくお願いします。

実際に問題の解決策を見つけました。これは、他のアクティビティが実行されているときではなく、アクティブな特定のアクティビティでのみ NFC イベントを発生させるための鍵です。Android SDK のサンプルで説明されています: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.html

4

2 に答える 2

2

実際に問題の解決策を見つけました。これは、他のアクティビティが実行されているときではなく、アクティブなときに特定のアクティビティでのみ NFC イベントを発生させるための鍵です。Android SDK のサンプルで説明されています: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.html

于 2011-06-22T10:38:49.670 に答える
0

放送を受信したら活動を開始するつもりですか?paymentScreen.onNewIntent(intent);それを達成しようとしているとは思えません。代わりに、startActivity() で使用できるインテントを構築する必要があり、ブロードキャスト レシーバーのインテントからの関連データをエクストラの形でアクティビティ インテントに含める必要があります。

于 2011-05-26T17:36:46.083 に答える