I have a problem with getting results from GoogleSignIn.requestPermissions() method. I am asking user for hydration data permission. This code is inside button onClick scope.
val fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_HYDRATION, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_HYDRATION, FitnessOptions.ACCESS_WRITE)
.addDataType(DataType.AGGREGATE_HYDRATION, FitnessOptions.ACCESS_READ)
.addDataType(DataType.AGGREGATE_HYDRATION, FitnessOptions.ACCESS_WRITE)
.build()
val account = GoogleSignIn.getAccountForExtension(context, fitnessOptions)
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
GoogleSignIn.requestPermissions(
activity,
GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,
account,
fitnessOptions)
} else {
// we have access ...
}
So I found the way, that in compose we have to use rememberLauncherForActivityResult in order to get results for our activity.
val resultLauncher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.StartIntentSenderForResult()) { activityResult->
if (activityResult.resultCode == RESULT_OK)
Log.d("appDebug", "Accepted")
else {
Log.d("appDebug", "Denied")
}
}
Unfortunetly this isn't working with google permissions, because I can't create an intent. How should I handle this in jetpack compose? Documentation mentions only old deprecated onActivityResult for UI toolkit.