我按照 YouTube 上的教程来获取位置。它运行良好,但我尝试将其更改为一个函数,以便我可以在使用 navcontroller 的应用程序中使用它,现在它要求一个活动,我尝试传递它被调用的屏幕,但我收到错误。我必须在函数中传递什么参数才能使其正常工作?这是我的代码
@Composable
fun LoginScreen(
navController : NavController
) {
val context = LocalContext.current
Column(
modifier = Modifier
.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Button(onClick = {
fetchLocation(context, this) <-----Here is the error. I tried Screens.Login and Login
这是函数
private fun fetchLocation(context: Context, Login: Activity): MutableList<Double> {
lateinit var fusedLocationProviderClient: FusedLocationProviderClient
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(context)
val task = fusedLocationProviderClient.lastLocation
var coordinate: MutableList<Double> = mutableListOf()
if(ActivityCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED && ActivityCompat
.checkSelfPermission(context, android.Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED
){
ActivityCompat.requestPermissions(Login, arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 101)
//in requestPermissions, if I put context instead of Login I get told to put an activity
return coordinate
}
task.addOnSuccessListener{
if(it !=null) {
coordinate.add(it.longitude)
coordinate.add(it.latitude)
}
}
return coordinate
}
你需要将上下文作为 Activity
ActivityCompat.requestPermissions(context as Activity, arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 101)
return coordinate