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"