问题描述
我正在使用 android studio 创建一个应用程序,我正在使用 Google Fit 应用程序同步两者以通过 Mi-Fit 获取一些信息。 问题是我的手机没有弹出获取权限窗口,我不知道为什么。 这是我的权限类:
package Model.Users;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInoptionsExtension;
import com.google.android.gms.fitness.fitnessOptions;
import static com.google.android.gms.fitness.data.DataType.TYPE_ACTIVITY_SEGMENT;
import static com.google.android.gms.fitness.data.DataType.TYPE_CALORIES_EXPENDED;
import static com.google.android.gms.fitness.data.DataType.TYPE_disTANCE_DELTA;
import static com.google.android.gms.fitness.data.DataType.TYPE_STEP_COUNT_DELTA;
public class Permissions {
private AppCompatActivity app;
final private int ALL_PERMISSIONS = 101;
public Permissions(AppCompatActivity app) {
this.app = app;
}
/**
*
* @throws PackageManager.NameNotFoundException
*/
public void requestPermissions() throws PackageManager.NameNotFoundException {
PackageInfo info = app.getPackageManager().getPackageInfo(app.getPackageName(),PackageManager.GET_PERMISSIONS);
String[] permissions = info.requestedPermissions;//This array contains the requested permissions.
Log.i("PERMISSIONS","************PERMISSIONS LIST*************");
ActivityCompat.requestPermissions(app,permissions,ALL_PERMISSIONS); /** gets all permissions from manifest! */
// insert all permissions needed
GoogleSignInoptionsExtension fitnessOptions =
fitnessOptions.builder()
.addDataType(TYPE_STEP_COUNT_DELTA,fitnessOptions.ACCESS_READ)
.addDataType(TYPE_disTANCE_DELTA,fitnessOptions.ACCESS_READ)
.addDataType(TYPE_CALORIES_EXPENDED,fitnessOptions.ACCESS_READ)
.addDataType(TYPE_ACTIVITY_SEGMENT,fitnessOptions.ACCESS_READ)
.build();
if (!GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(app),fitnessOptions)) {
GoogleSignIn.requestPermissions( app,1,GoogleSignIn.getLastSignedInAccount(app),fitnessOptions);
Log.i("PERMISSIONS","************PERMISSIONS REQUESTED*************");
}
}
}
我得到的第一个屏幕是选择谷歌账户: this screen pops up always 然后我想得到这个屏幕,但我几乎从不这样做: almost never pops up
然后弹出批准位置的最终屏幕: permissions from phone always pops up
无法弄清楚为什么第二个屏幕不显示,我必须获得这些权限才能管理使用 google-fit 收集的数据
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)