Add AndroidNfcCommissioningManager() to AndroidChipPlatform constructor. (#39683)

* Add AndroidNfcCommissioningManager() to AndroidChipPlatform constructor.

* Update examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Restyled by google-java-format

* Kotlin formating.

Change-Id: I3b3287d0e77cdade217fa8d1be85787c03179f07

* Update src/platform/android/java/chip/platform/AndroidChipPlatform.java

Co-authored-by: Terence Hampson <thampson@google.com>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Restyled.io <commits@restyled.io>
Co-authored-by: Terence Hampson <thampson@google.com>
diff --git a/examples/android/CHIPTest/app/src/main/java/com/tcl/chip/chiptest/MainActivity.kt b/examples/android/CHIPTest/app/src/main/java/com/tcl/chip/chiptest/MainActivity.kt
index c29cee7..c9f664a 100644
--- a/examples/android/CHIPTest/app/src/main/java/com/tcl/chip/chiptest/MainActivity.kt
+++ b/examples/android/CHIPTest/app/src/main/java/com/tcl/chip/chiptest/MainActivity.kt
@@ -57,6 +57,7 @@
 
     AndroidChipPlatform(
       AndroidBleManager(),
+      AndroidNfcCommissioningManager(),
       PreferencesKeyValueStoreManager(this),
       PreferencesConfigurationManager(this),
       NsdManagerServiceResolver(this),
diff --git a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt
index de8e598..0428ca3 100644
--- a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt
+++ b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt
@@ -26,6 +26,7 @@
 import chip.devicecontroller.ICDClientInfo
 import chip.platform.AndroidBleManager
 import chip.platform.AndroidChipPlatform
+import chip.platform.AndroidNfcCommissioningManager
 import chip.platform.ChipMdnsCallbackImpl
 import chip.platform.DiagnosticDataProviderImpl
 import chip.platform.NsdManagerServiceBrowser
@@ -45,6 +46,8 @@
   private lateinit var androidPlatform: AndroidChipPlatform
   /* 0xFFF4 is a test vendor ID, replace with your assigned company ID */
   const val VENDOR_ID = 0xFFF4
+  private var androidNfcCommissioningManager: AndroidNfcCommissioningManager =
+    AndroidNfcCommissioningManager()
 
   private var icdCheckInCallback: ICDCheckInCallback? = null
 
@@ -95,6 +98,7 @@
       androidPlatform =
         AndroidChipPlatform(
           AndroidBleManager(context),
+          androidNfcCommissioningManager,
           PreferencesKeyValueStoreManager(context),
           PreferencesConfigurationManager(context),
           NsdManagerServiceResolver(
diff --git a/examples/tv-app/android/App/platform-app/src/main/java/com/matter/tv/server/service/MatterServant.java b/examples/tv-app/android/App/platform-app/src/main/java/com/matter/tv/server/service/MatterServant.java
index 683fb22..887d423 100644
--- a/examples/tv-app/android/App/platform-app/src/main/java/com/matter/tv/server/service/MatterServant.java
+++ b/examples/tv-app/android/App/platform-app/src/main/java/com/matter/tv/server/service/MatterServant.java
@@ -23,6 +23,7 @@
 import chip.appserver.ChipAppServer;
 import chip.platform.AndroidBleManager;
 import chip.platform.AndroidChipPlatform;
+import chip.platform.AndroidNfcCommissioningManager;
 import chip.platform.ChipMdnsCallbackImpl;
 import chip.platform.DiagnosticDataProviderImpl;
 import chip.platform.NsdManagerServiceBrowser;
@@ -130,6 +131,7 @@
     AndroidChipPlatform chipPlatform =
         new AndroidChipPlatform(
             new AndroidBleManager(),
+            new AndroidNfcCommissioningManager(),
             new PreferencesKeyValueStoreManager(applicationContext),
             new PreferencesConfigurationManager(applicationContext),
             new NsdManagerServiceResolver(applicationContext),
diff --git a/examples/tv-casting-app/android/App/app/src/main/jni/com/matter/casting/core/CastingApp.java b/examples/tv-casting-app/android/App/app/src/main/jni/com/matter/casting/core/CastingApp.java
index c860a9b..74080ce 100644
--- a/examples/tv-casting-app/android/App/app/src/main/jni/com/matter/casting/core/CastingApp.java
+++ b/examples/tv-casting-app/android/App/app/src/main/jni/com/matter/casting/core/CastingApp.java
@@ -22,6 +22,7 @@
 import chip.appserver.ChipAppServer;
 import chip.platform.AndroidBleManager;
 import chip.platform.AndroidChipPlatform;
+import chip.platform.AndroidNfcCommissioningManager;
 import chip.platform.ChipMdnsCallbackImpl;
 import chip.platform.DiagnosticDataProviderImpl;
 import chip.platform.NsdManagerServiceBrowser;
@@ -76,6 +77,7 @@
     chipPlatform =
         new AndroidChipPlatform(
             new AndroidBleManager(),
+            new AndroidNfcCommissioningManager(),
             new PreferencesKeyValueStoreManager(appParameters.getApplicationContext()),
             appParameters.getConfigurationManagerProvider().get(),
             new NsdManagerServiceResolver(
diff --git a/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterApp.kt b/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterApp.kt
index 6c8088a..ee5eb89 100644
--- a/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterApp.kt
+++ b/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterApp.kt
@@ -82,6 +82,7 @@
     androidChipPlatform =
       AndroidChipPlatform(
         AndroidBleManager(),
+        AndroidNfcCommissioningManager(),
         PreferencesKeyValueStoreManager(context),
         MatterPreferencesConfigurationManager(
           context,
diff --git a/src/platform/android/java/chip/platform/AndroidChipPlatform.java b/src/platform/android/java/chip/platform/AndroidChipPlatform.java
index 060a888..bb60c5e 100644
--- a/src/platform/android/java/chip/platform/AndroidChipPlatform.java
+++ b/src/platform/android/java/chip/platform/AndroidChipPlatform.java
@@ -19,9 +19,11 @@
 
 public final class AndroidChipPlatform {
   private BleManager mBleManager = null;
+  private NfcCommissioningManager mNfcCommissioningManager = null;
 
   public AndroidChipPlatform(
       BleManager ble,
+      NfcCommissioningManager nfc,
       KeyValueStoreManager kvm,
       ConfigurationManager cfg,
       ServiceResolver resolver,
@@ -31,6 +33,9 @@
     // Order is important here: initChipStack() initializes the BLEManagerImpl, which depends on the
     // BLEManager being set.
     setBLEManager(ble);
+    // Order is important here: initChipStack() initializes the NFCCommissioningManagerImpl, which
+    // depends on the NFCCommissioningManager being set.
+    setNFCCommissioningManager(nfc);
     setKeyValueStoreManager(kvm);
     setConfigurationManager(cfg);
     setDnssdDelegates(resolver, browser, chipMdnsCallback);
@@ -38,6 +43,19 @@
     initChipStack();
   }
 
+  // for NFCCommissioningManager
+  public NfcCommissioningManager getNFCCommissioningManager() {
+    return mNfcCommissioningManager;
+  }
+
+  private void setNFCCommissioningManager(NfcCommissioningManager manager) {
+    if (manager != null) {
+      mNfcCommissioningManager = manager;
+      manager.setAndroidChipPlatform(this);
+      nativeSetNFCCommissioningManager(manager);
+    }
+  }
+
   public native void onNfcTagResponse(byte[] response);
 
   public native void onNfcTagError();