[Spa] Migrate from deprecated ClickableText
Fix: 340173578
Test: manual - with Gallery
Test: manual - with Settings
Test: unit test
Change-Id: I9d41bfc4213c93f8e753658e1732a075a5c9701b
diff --git a/packages/SettingsLib/Spa/spa/build.gradle.kts b/packages/SettingsLib/Spa/spa/build.gradle.kts
index 6344501..4aa57b3 100644
--- a/packages/SettingsLib/Spa/spa/build.gradle.kts
+++ b/packages/SettingsLib/Spa/spa/build.gradle.kts
@@ -53,17 +53,17 @@
dependencies {
api(project(":SettingsLibColor"))
- api("androidx.appcompat:appcompat:1.7.0-alpha03")
+ api("androidx.appcompat:appcompat:1.7.0-beta01")
api("androidx.slice:slice-builders:1.1.0-alpha02")
api("androidx.slice:slice-core:1.1.0-alpha02")
api("androidx.slice:slice-view:1.1.0-alpha02")
- api("androidx.compose.material3:material3:1.3.0-alpha03")
+ api("androidx.compose.material3:material3:1.3.0-alpha06")
api("androidx.compose.material:material-icons-extended:$jetpackComposeVersion")
api("androidx.compose.runtime:runtime-livedata:$jetpackComposeVersion")
api("androidx.compose.ui:ui-tooling-preview:$jetpackComposeVersion")
api("androidx.lifecycle:lifecycle-livedata-ktx")
api("androidx.lifecycle:lifecycle-runtime-compose")
- api("androidx.navigation:navigation-compose:2.8.0-alpha05")
+ api("androidx.navigation:navigation-compose:2.8.0-alpha08")
api("com.github.PhilJay:MPAndroidChart:v3.1.0-alpha")
api("com.google.android.material:material:1.11.0")
debugApi("androidx.compose.ui:ui-tooling:$jetpackComposeVersion")
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/AnnotatedStringResource.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/AnnotatedStringResource.kt
index 88ba4b0..1a10bf0 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/AnnotatedStringResource.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/AnnotatedStringResource.kt
@@ -27,14 +27,13 @@
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.AnnotatedString
+import androidx.compose.ui.text.LinkAnnotation
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextDecoration
-const val URL_SPAN_TAG = "URL_SPAN_TAG"
-
@Composable
fun annotatedStringResource(@StringRes id: Int): AnnotatedString {
val resources = LocalContext.current.resources
@@ -97,12 +96,9 @@
start: Int,
end: Int,
) {
- addStyle(
- SpanStyle(color = urlSpanColor, textDecoration = TextDecoration.Underline),
- start,
- end,
+ val url = LinkAnnotation.Url(
+ url = urlSpan.url,
+ style = SpanStyle(color = urlSpanColor, textDecoration = TextDecoration.Underline),
)
- if (!urlSpan.url.isNullOrEmpty()) {
- addStringAnnotation(URL_SPAN_TAG, urlSpan.url, start, end)
- }
+ addLink(url, start, end)
}
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/AnnotatedText.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/AnnotatedText.kt
index 82ac7e3..f864fa9 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/AnnotatedText.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/AnnotatedText.kt
@@ -17,26 +17,17 @@
package com.android.settingslib.spa.widget.ui
import androidx.annotation.StringRes
-import androidx.compose.foundation.text.ClickableText
import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
-import androidx.compose.ui.platform.LocalUriHandler
-import com.android.settingslib.spa.framework.util.URL_SPAN_TAG
import com.android.settingslib.spa.framework.util.annotatedStringResource
@Composable
fun AnnotatedText(@StringRes id: Int) {
- val uriHandler = LocalUriHandler.current
- val annotatedString = annotatedStringResource(id)
- ClickableText(
- text = annotatedString,
+ Text(
+ text = annotatedStringResource(id),
style = MaterialTheme.typography.bodyMedium.copy(
color = MaterialTheme.colorScheme.onSurfaceVariant,
),
- ) { offset ->
- // Gets the url at the clicked position.
- annotatedString.getStringAnnotations(URL_SPAN_TAG, offset, offset)
- .firstOrNull()
- ?.let { uriHandler.openUri(it.item) }
- }
+ )
}