Make TalkBack announce "Next" button after provisioning completion

Bug: b/191924075
Test: Provision with TalkBack enabled
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:9efe3ca7ea93bfc0124292b7f993af1464e14918)
Merged-In: Id5b93ac374655019f63d529ee3b1a684b76e2cfe
Change-Id: Id5b93ac374655019f63d529ee3b1a684b76e2cfe
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1ae2be8
--- /dev/null
+++ b/README.md
@@ -0,0 +1,17 @@
+# Managed Provisioning
+
+Bundled app responsible for provisioning an enterprise device
+
+## Flows
+
+## QR
+
+```json
+{
+  "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME": "com.afwsamples.testdpc/com.afwsamples.testdpc.DeviceAdminReceiver",
+  "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION": "https://testdpc-latest-apk.appspot.com/preview",
+  "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM": "gJD2YwtOiWJHkSMkkIfLRlj-quNqG1fb6v100QmzM9w="
+}
+```
+
+![Code](https://chart.googleapis.com/chart?chs=420x420&cht=qr&chl=%7B%27android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME%27%3A+%27com.afwsamples.testdpc%2Fcom.afwsamples.testdpc.DeviceAdminReceiver%27%2C+%27android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION%27%3A+%27https%3A%2F%2Ftestdpc-latest-apk.appspot.com%2Fpreview%27%2C+%27android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM%27%3A+%27gJD2YwtOiWJHkSMkkIfLRlj-quNqG1fb6v100QmzM9w%3D%27%7D&choe=UTF-8)
diff --git a/src/com/android/managedprovisioning/provisioning/ProvisioningActivityBridgeImpl.java b/src/com/android/managedprovisioning/provisioning/ProvisioningActivityBridgeImpl.java
index 372e52b..d1895df 100644
--- a/src/com/android/managedprovisioning/provisioning/ProvisioningActivityBridgeImpl.java
+++ b/src/com/android/managedprovisioning/provisioning/ProvisioningActivityBridgeImpl.java
@@ -16,6 +16,8 @@
 
 package com.android.managedprovisioning.provisioning;
 
+import static android.view.View.ACCESSIBILITY_LIVE_REGION_POLITE;
+
 import static com.google.android.setupdesign.util.ThemeHelper.shouldApplyMaterialYouStyle;
 
 import android.app.Activity;
@@ -101,6 +103,7 @@
         }
         ViewGroup root = activity.findViewById(R.id.sud_layout_template_content);
         mButtonFooterContainer = getButtonFooterContainer(root);
+        mButtonFooterContainer.setAccessibilityLiveRegion(ACCESSIBILITY_LIVE_REGION_POLITE);
 
         getUtils()
                 .onViewMeasured(
diff --git a/src/com/android/managedprovisioning/util/LazyStringResource.kt b/src/com/android/managedprovisioning/util/LazyStringResource.kt
index bddd8b9..cdc3bfa 100644
--- a/src/com/android/managedprovisioning/util/LazyStringResource.kt
+++ b/src/com/android/managedprovisioning/util/LazyStringResource.kt
@@ -17,11 +17,13 @@
 package com.android.managedprovisioning.util
 
 import android.content.Context
+import android.util.Log
 import android.os.Bundle
 import android.os.Parcel
 import android.os.Parcelable
 import androidx.annotation.StringRes
 
+
 /** A container for a [StringRes] with format arguments that can be resolved lazily */
 sealed class LazyStringResource : Parcelable {
     /** Android string resource ID */
@@ -32,7 +34,18 @@
     abstract val formatArgs: Array<out CharSequence>
 
     /** Resolve the lazy value of this resource within a given [context] */
-    open fun value(context: Context): String = context.getString(resId, *formatArgs)
+    open fun value(context: Context): String =
+        runCatching { context.getString(resId, *formatArgs) }
+            .onFailure {
+                val args = formatArgs.joinToString(",")
+                Log.e(
+                    TAG,
+                    "Unable to resolve LazyStringResource: resId=$resId formatArgs=[$args]",
+                    it
+                )
+            }
+            .getOrThrow()
+
 
     /**
      * Resolve the lazy value of this resource within a given [context] or return null if it cannot be
@@ -81,6 +94,7 @@
         "${this::class.simpleName}(resId=$resId, formatArgs=${formatArgs.contentToString()})"
 
     companion object {
+        private const val TAG = "LazyStringResource"
         const val BUNDLE_RES_ID = "resId"
         const val BUNDLE_ARGS = "args"