问题描述
我正在尝试连接到 google fit 并与其从我的应用程序交换健康数据。 这是我的代码:
if (!GoogleSignIn.hasPermissions(
GoogleSignIn.getLastSignedInAccount(getContext()),new Scope(Scopes.fitness_BLOOD_gluCOSE_READ_WRITE)
)) {
GoogleSignInoptions gso = new GoogleSignInoptions.Builder(GoogleSignInoptions.DEFAULT_SIGN_IN)
.requestemail()
.requestScopes(new Scope(Scopes.fitness_BLOOD_gluCOSE_READ_WRITE))
.build();
GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(this.getContext(),gso);
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent,RC_SIGN_IN);
}
if (!GoogleSignIn.hasPermissions(
GoogleSignIn.getLastSignedInAccount(getContext()),new Scope(Scopes.fitness_BLOOD_gluCOSE_READ_WRITE)
))
{
Log.e("GOOGLE_FIT","no permission");
GoogleSignIn.requestPermissions(
this,GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,GoogleSignIn.getLastSignedInAccount(getContext()),new Scope(Scopes.fitness_BLOOD_gluCOSE_READ_WRITE)
);
} else {
accessGoogleFit();
}
以及访问 GoogleFit() 的方法:
private void accessGoogleFit() {
final String LOG_TAG="i am here";
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
long endTime = cal.getTimeInMillis();
cal.add(Calendar.YEAR,-1);
long startTime = cal.getTimeInMillis();
DataReadRequest readRequest = new DataReadRequest.Builder()
.aggregate(DataType.TYPE_STEP_COUNT_DELTA,DataType.AGGREGATE_STEP_COUNT_DELTA)
.setTimeRange(startTime,endTime,TimeUnit.MILLISECONDS)
.bucketByTime(1,TimeUnit.DAYS)
.build();
fitness.getHistoryClient(this.getContext(),GoogleSignIn.getLastSignedInAccount(this.getActivity()))
.readData(readRequest)
.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(Object o) {
Log.d(LOG_TAG,"onSuccess()");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(LOG_TAG,"onFailure()",e);
}
})
.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
Log.d(LOG_TAG,"onComplete()");
}
});
}
执行时收到此错误:
onFailure() com.google.android.gms.common.api.ApiException: 5000: 应用程序需要用户的 OAuth 同意 在 com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(com.google.android.gms:play-services-base@@17.1.0:4) 在 com.google.android.gms.common.internal.zai.zaf(com.google.android.gms:play-services-base@@17.1.0:2) 在 com.google.android.gms.common.internal.zak.onComplete(com.google.android.gms:play-services-base@@17.1.0:6) 在 com.google.android.gms.common.api.internal.BasePendingResult.zaa(com.google.android.gms:play-services-base@@17.1.0:176) 在 com.google.android.gms.common.api.internal.BasePendingResult.setResult(com.google.android.gms:play-services-base@@17.1.0:135) 在 com.google.android.gms.internal.fitness.zzae.setResult(com.google.android.gms:play-services-fitness@@20.0.0:3) 在 com.google.android.gms.internal.fitness.zzdp.zza(com.google.android.gms:play-services-fitness@@20.0.0:13) 在 com.google.android.gms.internal.fitness.zzbf.zza(com.google.android.gms:play-services-fitness@@20.0.0:11) 在 com.google.android.gms.internal.fitness.zza.onTransact(com.google.android.gms:play-services-fitness@@20.0.0:13) 在 android.os.Binder.execTransactInternal(Binder.java:1021) 在 android.os.Binder.execTransact(Binder.java:994)
我按照https://developers.google.com/fit/android/get-started中的步骤操作。
请帮助我并告诉我我做错了什么?
感谢 evreyone!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)