是否有任何开箱即用的解决方案来限制 TextField 中的字符大小?我没有看到像 XML 中那样的任何 maxLength 参数。
在替换此已弃用的代码以检查设备上的互联网连接时,有人可以为我指出正确的方向吗?
private val isNetworkAvailable = MutableStateFlow(false)
fun checkNetworkAvailability(context: Context): MutableStateFlow<Boolean> {
val connectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
connectivityManager.registerDefaultNetworkCallback(this)
var isConnected = false
// allNetworks Deprecated
connectivityManager.allNetworks.forEach { network ->
val networkCapability = connectivityManager.getNetworkCapabilities(network)
networkCapability?.let {
if(it.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
isConnected = true
return@forEach
}
}
}
isNetworkAvailable.value = isConnected
return isNetworkAvailable
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 Google 一键登录集成到我使用 Jetpack Compose 构建的应用程序中。我正在使用 startIntentSenderForResult 启动意图,但现在的问题是我无法从可组合函数接收活动结果。我正在使用 RememberLauncherForActivityResult 从意图获取结果,但仍然没有得到任何结果。有什么解决办法吗?
登录界面
@Composable
fun LoginScreen() {
val activity = LocalContext.current as Activity
val activityResult = remember { mutableStateOf<ActivityResult?>(null) }
val launcher = rememberLauncherForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
val oneTapClient = Identity.getSignInClient(activity)
val credential = oneTapClient.getSignInCredentialFromIntent(result.data)
val idToken = credential.googleIdToken
if (idToken != null) {
// Got an ID token from Google. Use it to authenticate
// with your backend.
Log.d("LOG", idToken)
} else {
Log.d("LOG", "Null Token")
}
Log.d("LOG", "ActivityResult") …Run Code Online (Sandbox Code Playgroud) LocationRequest 现已弃用?它的替代品是什么?
我正在使用它,最近收到一条弃用消息。我现在应该怎么做:
val locationRequest = LocationRequest().apply {
interval = LOCATION_UPDATE_INTERVAL
fastestInterval = LOCATION_FASTEST_INTERVAL
priority = LocationRequest.PRIORITY_HIGH_ACCURACY
}
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.getMainLooper()
)
Run Code Online (Sandbox Code Playgroud) 几个小时前,我已将我的 Android Studio 升级到 4.2 版本,现在当我打开一个旧项目时,我收到了来自 Android Studio 的消息,要求将 Gradle 版本升级到 6.7.1。在我这样做之后,我收到了这个错误消息,我无法再构建我的项目......我也尝试过从 Android Studio 提供的解决方案,但没有成功。有什么帮助吗?
错误:
无法找到方法 ''void com.android.build.api.extension.AndroidComponentsExtension$DefaultImpls.androidTest$default(com.android.build.api.extension.AndroidComponentsExtension, com.android.build.api.extension.VariantSelector, kotlin .jvm.functions.Function1, int, java.lang.Object)'' 'void com.android.build.api.extension.AndroidComponentsExtension$DefaultImpls.androidTest$default(com.android.build.api.extension.AndroidComponentsExtension, com .android.build.api.extension.VariantSelector, kotlin.jvm.functions.Function1, int, java.lang.Object)'
Gradle 的依赖缓存可能已损坏(这有时发生在网络连接超时之后。)
重新下载依赖项并同步项目(需要网络) Gradle 构建过程(守护进程)的状态可能已损坏。停止所有 Gradle 守护进程可能会解决这个问题。
停止 Gradle 构建过程(需要重新启动) 您的项目可能正在使用第三方插件,该插件与项目中的其他插件或项目请求的 Gradle 版本不兼容。
在 Gradle 进程损坏的情况下,您还可以尝试关闭 IDE,然后杀死所有 Java 进程。
Context有没有办法在 a 内获得LaunchedEffect?我需要调用某个需要对象引用Context才能执行的函数。
我不能使用LocalContext.current,因为:
@Composable 调用只能在 @Composable 函数的上下文中发生
我不确定如何进行计算以使该弧在画布上居中?有人能指出我正确的方向吗?
Canvas(modifier = Modifier
.background(Color.LightGray)
.fillMaxWidth()
.height(300.dp)
) {
drawArc(
color = Color.Blue,
startAngle = 30f,
sweepAngle = 300f,
useCenter = false,
style = Stroke(width = 50f, cap = StrokeCap.Round),
size = size/2.25F
)
}
Run Code Online (Sandbox Code Playgroud) android android-canvas kotlin android-jetpack-compose android-jetpack-compose-canvas
好的,我已经创建了自己的 .SVG 矢量图标并将其作为 XML 导入 Android Studio。现在我正在尝试使用相同的向量创建一个图标。但是,当我在 PainterResource() 中指定该向量时,它会将其绘制为黑色。而我原来的 SVG 有多种颜色。为什么会发生这种情况?
Icon(
painter = painterResource(id = R.drawable.ic_google_logo),
contentDescription = "Google Button"
)
Run Code Online (Sandbox Code Playgroud)
android ×8
kotlin ×7
android-jetpack-compose-canvas ×1
build.gradle ×1
fusedlocationproviderclient ×1
gradle ×1