@@ -3,15 +3,20 @@ package com.microsoft.reacttestapp
33import android.app.Activity
44import android.content.Intent
55import android.os.Bundle
6+ import android.os.Looper
67import android.view.LayoutInflater
78import android.widget.TextView
9+ import androidx.core.os.HandlerCompat
810import androidx.recyclerview.widget.DividerItemDecoration
911import androidx.recyclerview.widget.LinearLayoutManager
1012import androidx.recyclerview.widget.RecyclerView
1113import com.facebook.react.ReactActivity
1214import com.facebook.react.bridge.ReactContext
1315import com.facebook.react.modules.systeminfo.ReactNativeVersion
16+ import com.facebook.react.packagerconnection.PackagerConnectionSettings
1417import com.google.android.material.appbar.MaterialToolbar
18+ import com.microsoft.reacttestapp.camera.canUseCamera
19+ import com.microsoft.reacttestapp.camera.scanForQrCode
1520import com.microsoft.reacttestapp.component.ComponentActivity
1621import com.microsoft.reacttestapp.component.ComponentBottomSheetDialogFragment
1722import com.microsoft.reacttestapp.component.ComponentListAdapter
@@ -20,6 +25,15 @@ import com.microsoft.reacttestapp.manifest.Component
2025import com.microsoft.reacttestapp.react.BundleSource
2126
2227class MainActivity : ReactActivity () {
28+
29+ companion object {
30+ const val REQUEST_CODE_PERMISSIONS = 42
31+ }
32+
33+ val mainThreadHandler by lazy {
34+ HandlerCompat .createAsync(Looper .getMainLooper())
35+ }
36+
2337 private var didInitialNavigation = false
2438
2539 private val newComponentViewModel = { component: Component ->
@@ -76,7 +90,7 @@ class MainActivity : ReactActivity() {
7690 didInitialNavigation =
7791 savedInstanceState?.getBoolean(" didInitialNavigation" , false ) == true
7892
79- if (components.count() > 0 ) {
93+ if (components.isNotEmpty() ) {
8094 val index =
8195 if (components.count() == 1 ) 0 else session.lastOpenedComponent(checksum)
8296 index?.let {
@@ -97,7 +111,7 @@ class MainActivity : ReactActivity() {
97111 setupRecyclerView(components, checksum)
98112 }
99113
100- components.count() > 0 -> {
114+ components.isNotEmpty() -> {
101115 val slug = BuildConfig .ReactTestApp_singleApp
102116 val component = components.find { it.slug == slug }
103117 ? : throw IllegalArgumentException (" No component with slug: $slug " )
@@ -111,6 +125,20 @@ class MainActivity : ReactActivity() {
111125 }
112126 }
113127
128+ override fun onRequestPermissionsResult (
129+ requestCode : Int ,
130+ permissions : Array <out String >,
131+ grantResults : IntArray
132+ ) {
133+ if (requestCode == REQUEST_CODE_PERMISSIONS ) {
134+ if (canUseCamera()) {
135+ scanForQrCode()
136+ }
137+ } else {
138+ super .onRequestPermissionsResult(requestCode, permissions, grantResults)
139+ }
140+ }
141+
114142 override fun onSaveInstanceState (outState : Bundle ) {
115143 outState.putBoolean(" didInitialNavigation" , didInitialNavigation)
116144 super .onSaveInstanceState(outState)
@@ -158,6 +186,7 @@ class MainActivity : ReactActivity() {
158186 true
159187 }
160188 R .id.load_from_dev_server -> {
189+ PackagerConnectionSettings (this ).debugServerHost = " "
161190 reload(BundleSource .Server )
162191 true
163192 }
@@ -167,6 +196,10 @@ class MainActivity : ReactActivity() {
167196 session.shouldRememberLastComponent = enable
168197 true
169198 }
199+ R .id.scan_qr_code -> {
200+ scanForQrCode()
201+ true
202+ }
170203 R .id.show_dev_options -> {
171204 reactInstanceManager.devSupportManager.showDevOptionsDialog()
172205 true
0 commit comments