Skip to content

Commit 6d38411

Browse files
fix: Address Kotlin compilation errors for requestPermissionLauncher
This commit applies further corrections to resolve Kotlin compilation errors related to `requestPermissionLauncher` in `MainActivity.kt`. Previous changes addressed a "recursive type checking" error by adding explicit type annotations. This commit addresses a subsequent "Variable 'requestPermissionLauncher' must be initialized" error. The following changes were made: 1. `requestPermissionLauncher` declaration was changed from a `val` initialized at the declaration site to a `private lateinit var`. 2. The initialization of `requestPermissionLauncher` (using `registerForActivityResult`) was moved into the `onCreate` method, ensuring it's initialized before any potential use. These modifications are standard practices for handling ActivityResultLaunchers and aim to resolve the reported initialization and type inference issues.
1 parent 86f11b1 commit 6d38411

1 file changed

Lines changed: 29 additions & 25 deletions

File tree

app/src/main/kotlin/com/google/ai/sample/MainActivity.kt

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -128,31 +128,7 @@ class MainActivity : ComponentActivity() {
128128

129129
// Permission Launchers
130130
private lateinit var requestNotificationPermissionLauncher: ActivityResultLauncher<String>
131-
private val requestPermissionLauncher: ActivityResultLauncher<Array<String>> = registerForActivityResult(
132-
ActivityResultContracts.RequestMultiplePermissions()
133-
) { permissions: Map<String, Boolean> ->
134-
Log.d(PERMISSION_WORKFLOW_TAG, "requestPermissionLauncher callback received. Permissions: $permissions")
135-
val allGranted = permissions.entries.all { it.value }
136-
if (allGranted) {
137-
Log.i(PERMISSION_WORKFLOW_TAG, "All required permissions granted by user.")
138-
mediaPermissionManager.resetMediaPermissionDenialCount()
139-
updateStatusMessage("All required permissions granted")
140-
// TODO: Proceed with media access
141-
} else {
142-
val deniedPermissions = permissions.entries.filter { !it.value }.map { it.key }
143-
Log.w(PERMISSION_WORKFLOW_TAG, "Permissions denied: $deniedPermissions")
144-
mediaPermissionManager.incrementMediaPermissionDenialCount() // Logs count internally
145-
val denialCount = mediaPermissionManager.getMediaPermissionDenialCount() // Logs count internally
146-
147-
if (denialCount == 1) {
148-
Log.i(PERMISSION_WORKFLOW_TAG, "Denial count is 1. Re-requesting permissions immediately for the second time.")
149-
requestPermissionLauncher.launch(requiredPermissions)
150-
} else if (denialCount >= 2) {
151-
Log.i(PERMISSION_WORKFLOW_TAG, "Denial count is $denialCount (>=2). Proceeding to show SafGuidanceDialog.")
152-
showSafGuidanceDialog = true
153-
}
154-
}
155-
}
131+
private lateinit var requestPermissionLauncher: ActivityResultLauncher<Array<String>>
156132

157133
// START: Added for Accessibility Service Status
158134
private val _isAccessibilityServiceEnabled = MutableStateFlow(false)
@@ -310,6 +286,34 @@ class MainActivity : ComponentActivity() {
310286
mediaPermissionManager = com.google.ai.sample.util.MediaPermissionManager(applicationContext)
311287
Log.d(TAG, "onCreate: MediaPermissionManager initialized.")
312288

289+
requestPermissionLauncher = registerForActivityResult(
290+
ActivityResultContracts.RequestMultiplePermissions()
291+
) { permissions: Map<String, Boolean> ->
292+
Log.d(PERMISSION_WORKFLOW_TAG, "requestPermissionLauncher callback received. Permissions: $permissions")
293+
val allGranted = permissions.entries.all { it.value }
294+
if (allGranted) {
295+
Log.i(PERMISSION_WORKFLOW_TAG, "All required permissions granted by user.")
296+
mediaPermissionManager.resetMediaPermissionDenialCount()
297+
updateStatusMessage("All required permissions granted")
298+
// TODO: Proceed with media access
299+
} else {
300+
val deniedPermissions = permissions.entries.filter { !it.value }.map { it.key }
301+
Log.w(PERMISSION_WORKFLOW_TAG, "Permissions denied: $deniedPermissions")
302+
mediaPermissionManager.incrementMediaPermissionDenialCount() // Logs count internally
303+
val denialCount = mediaPermissionManager.getMediaPermissionDenialCount() // Logs count internally
304+
305+
if (denialCount == 1) {
306+
Log.i(PERMISSION_WORKFLOW_TAG, "Denial count is 1. Re-requesting permissions immediately for the second time.")
307+
// Note: This recursive call to launch on the same launcher instance is fine.
308+
requestPermissionLauncher.launch(requiredPermissions)
309+
} else if (denialCount >= 2) {
310+
Log.i(PERMISSION_WORKFLOW_TAG, "Denial count is $denialCount (>=2). Proceeding to show SafGuidanceDialog.")
311+
showSafGuidanceDialog = true
312+
}
313+
}
314+
}
315+
Log.d(TAG, "onCreate: requestPermissionLauncher initialized.")
316+
313317
apiKeyManager = ApiKeyManager.getInstance(this)
314318
Log.d(TAG, "onCreate: ApiKeyManager initialized.")
315319
if (apiKeyManager.getCurrentApiKey().isNullOrEmpty()) {

0 commit comments

Comments
 (0)