NFC onNewIntent()メソッドを呼び出せません

ジェイハンイレリ

フォアグラウンドディスパッチを使用してMifareClassic1kカードのIDを読み取ろうとしています。ログからわかるように、フォアグラウンドディスパッチを有効にすることはできますが、onNewIntent()メソッドを呼び出すことはできません。任意の提案をいただければ幸いです。

MainActivity.java

...
@Override
   protected void onResume() {
      setupForegroundDispatch(this, mAdapter);
      super.onResume();
} 

public static void setupForegroundDispatch(final Activity activity, NfcAdapter adapter) {
    final Intent intent = new Intent(activity.getApplicationContext(), activity.getClass());
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    System.out.println("Setup FGD.");  // i can see this output.

    final PendingIntent pendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), 0, intent, 0);

    IntentFilter[] filters = new IntentFilter[1];
    String[][] techList = new String[][]{};

    // Notice that this is the same filter as in our manifest.
    filters[0] = new IntentFilter();
    filters[0].addAction(NfcAdapter.ACTION_NDEF_DISCOVERED);
    filters[0].addCategory(Intent.CATEGORY_DEFAULT);
    try {
        filters[0].addDataType(MIME_TEXT_PLAIN);
    } catch (MalformedMimeTypeException e) {
        throw new RuntimeException("Check your mime type.");
    }

    adapter.enableForegroundDispatch(activity, pendingIntent, filters, techList);
    System.out.println("Enabled FGD.");  // and this one.
}

protected void onNewIntent(Intent intent) { 
    System.out.println("Intent."); but i cannot see this one,
    handleIntent(intent);
}

private void handleIntent(Intent intent) {      
    System.out.println("Handle.");  // and this one.
    String action = intent.getAction();
    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
        System.out.println("NDEF discovered.");
         ....

AndroidManifest

....
 <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.nfc.action.TECH_DISCOVERED" />
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <action android:name="android.nfc.action.TAG_DISCOVERED" />
         </intent-filter>

        <meta-data
                android:name="android.nfc.action.TECH_DISCOVERED"
                android:resource="@xml/nfc_tech_filter" />
    </activity>
....
マイケルローランド

すべてのMIFAREクラシックタグ(テキストレコード(またはMIMEタイプtext / plainを含むMIMEタイプレコードを含むものだけでなく)を検出できるようにする場合は、フォアグラウンドディスパッチを調整して、特定のタグテクノロジを検出する必要があります。特定のNDEFレコードタイプ:

public static void setupForegroundDispatch(final Activity activity, NfcAdapter adapter) {
    final Intent pendingIntent = PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

    IntentFilter[] filters = new IntentFilter[] { new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED) };
    String[][] techList = new String[][] { new String[] { MifareClassic.class.getName() } };

    adapter.enableForegroundDispatch(activity, pendingIntent, filters, techList);
}

BroadcomのNFCチップセットを搭載したデバイスでMIFAREClassicタグのUIDも取得する場合(NXP独自のテクノロジのライセンスの問題により、これらのデバイスはMIFAREClassicをMIFAREClassicとして検出できません)、代わりにすべてのNfcAタグをフィルタリングできます(MIFARE ClassicNfcAすべてのデバイスで同様検出されるため、NfcAMifareClassic)の両方をフィルタリングする必要はありません

    String[][] techList = new String[][] { new String[] { NfcA.class.getName() } };

最後に、マニフェストのインテントフィルタが、コードのインテントフィルタと一致しません。フォアグラウンドディスパッチの同等のインテントフィルターは次のようになります。

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
</intent-filter>

上に示したフォアグラウンドディスパッチに相当するマニフェストは次のようになります。

<intent-filter>
    <action android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
           android:resource="@xml/nfc_tech_filter" />

nfc_tech_filter.xml含みます:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <tech-list>
        <tech>android.nfc.tech.MifareClassic</tech>
    </tech-list>
</resources>

または(に一致する場合NfcA):

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <tech-list>
        <tech>android.nfc.tech.NfcA</tech>
    </tech-list>
</resources>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

onNewIntent()でNFCタグがnull

分類Dev

HTMLから静的メソッドを呼び出せません

分類Dev

AndroidKotlin-onNavigationItemSelectedメソッドを呼び出せません

分類Dev

MainActivityからメソッドを呼び出せません

分類Dev

QMLListViewでQtc ++メソッドを呼び出せません

分類Dev

JAVA-配列メソッドを呼び出せません

分類Dev

mainメソッドで配列を呼び出せません

分類Dev

anglejs bindToController はメソッドを呼び出せません

分類Dev

Pythonでメソッドを呼び出せません

分類Dev

Pythonではメソッドを呼び出せません

分類Dev

Ionic 4:NFCはNFCとNdefをインポートできません

分類Dev

MoqはIAuthenticationManagerSignInメソッドを呼び出しません

分類Dev

JavaScriptを使用したNFC

分類Dev

コルドバNFCが12月にNFCタグ値を取得

分類Dev

AndroidStudioでコールバックメソッドを呼び出せません

分類Dev

NFCタグとNFCカードは同じものですか?

分類Dev

ViewHolder(RecycleView)からAdapter(onBindViewHolder)のメソッドを呼び出せません

分類Dev

子React Nativeで親のメソッドを呼び出せません

分類Dev

Ionic3からWcfPostメソッドを呼び出せません

分類Dev

クラスのメソッドc#を呼び出せません

分類Dev

ビューでonDrawメソッドを呼び出せませんでした

分類Dev

オブジェクトメソッドを呼び出せません

分類Dev

デリゲートメソッドを呼び出せません

分類Dev

SpringBoot&Bootsfaces:メソッドgetOnblurを呼び出せませんでした

分類Dev

TypeError: 未定義のメソッド「getName」を呼び出せません

分類Dev

PHP クラスのメソッドを呼び出せません

分類Dev

NFCデバイスをNFCタグとして使用する

分類Dev

カメラが開いているときはNFCを使用できません

分類Dev

Spockはメソッド呼び出しを検出しません

Related 関連記事

  1. 1

    onNewIntent()でNFCタグがnull

  2. 2

    HTMLから静的メソッドを呼び出せません

  3. 3

    AndroidKotlin-onNavigationItemSelectedメソッドを呼び出せません

  4. 4

    MainActivityからメソッドを呼び出せません

  5. 5

    QMLListViewでQtc ++メソッドを呼び出せません

  6. 6

    JAVA-配列メソッドを呼び出せません

  7. 7

    mainメソッドで配列を呼び出せません

  8. 8

    anglejs bindToController はメソッドを呼び出せません

  9. 9

    Pythonでメソッドを呼び出せません

  10. 10

    Pythonではメソッドを呼び出せません

  11. 11

    Ionic 4:NFCはNFCとNdefをインポートできません

  12. 12

    MoqはIAuthenticationManagerSignInメソッドを呼び出しません

  13. 13

    JavaScriptを使用したNFC

  14. 14

    コルドバNFCが12月にNFCタグ値を取得

  15. 15

    AndroidStudioでコールバックメソッドを呼び出せません

  16. 16

    NFCタグとNFCカードは同じものですか?

  17. 17

    ViewHolder(RecycleView)からAdapter(onBindViewHolder)のメソッドを呼び出せません

  18. 18

    子React Nativeで親のメソッドを呼び出せません

  19. 19

    Ionic3からWcfPostメソッドを呼び出せません

  20. 20

    クラスのメソッドc#を呼び出せません

  21. 21

    ビューでonDrawメソッドを呼び出せませんでした

  22. 22

    オブジェクトメソッドを呼び出せません

  23. 23

    デリゲートメソッドを呼び出せません

  24. 24

    SpringBoot&Bootsfaces:メソッドgetOnblurを呼び出せませんでした

  25. 25

    TypeError: 未定義のメソッド「getName」を呼び出せません

  26. 26

    PHP クラスのメソッドを呼び出せません

  27. 27

    NFCデバイスをNFCタグとして使用する

  28. 28

    カメラが開いているときはNFCを使用できません

  29. 29

    Spockはメソッド呼び出しを検出しません

ホットタグ

アーカイブ