仅请求日历权限 GoogleCalendar API

Only ask for Calendar Permission GoogleCalendar API

我有一个 android 应用程序,我在其中与 google 日历同步 API 以使用移动应用程序创建、读取和删除事件。当你第一次输入一个 google 帐户时,它同步没有问题,但所有这些权限都被激活(见图)。我只想选择活动日历并禁用其余选项。我该怎么做?

这是请求权限的代码:

    @AfterPermissionGranted(REQUEST_PERMISSION_GET_ACCOUNTS)
    private void selectGoogleAccount(){
        if (EasyPermissions.hasPermissions(this, android.Manifest.permission.GET_ACCOUNTS)) {
            Intent intent = AccountManager.newChooseAccountIntent(null, null, new String[] { GoogleAccountManager.ACCOUNT_TYPE}, true, null, null, null, null);
            startActivityForResult(intent, REQUEST_ACCOUNT_PICKER);
        }else {
            EasyPermissions.requestPermissions(this, getString(R.string.titleGetUserPermission), REQUEST_PERMISSION_GET_ACCOUNTS, android.Manifest.permission.GET_ACCOUNTS);
        }
}

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
    }

AFAIK,enable and disable services is to use Google API Console web UI. Though, based from this SO post 的最简单方法,某些 API 之间存在依赖关系,如果您激活它们,则无法停用其他 API。

但是,您可能还想检查 Manually managed connections。这将指导您如何使用 enableAutoManage 方法启动自动管理的连接,并自动解决错误。在几乎所有情况下,这是从您的 Android 应用程序连接到 Google API 的最佳和最简单的方法。

最后,OAuth 2.0 Scopes for Google APIs或许也能派上用场。本文档列出了您可能需要请求访问 Google API 的 OAuth 2.0 范围。