Google云端硬盘Api检查用户是否已登录

时间:2016-01-17 19:57:41

标签: android google-drive-api google-drive-android-api

我使用Google Drive Api,现在我有一个简单的应用程序(类似于https://github.com/googledrive/android-quickstart),但我想添加两个选项的登录页面(使用google驱动器登录并以访客身份登录),仅显示用户不是用任何帐户登录。我怎么检查呢?我想仅在点击“使用谷歌驱动器登录”后才显示此活动,我将看到与要选择的帐户列表对话框。

1 个答案:

答案 0 :(得分:0)

没有客人'登录Google云端硬盘。只有已注册的帐户才能使用#39;在您的Android设备上(请参阅设置>帐户)可以访问云端硬盘(他们的GooDrives)。

有两种方法可以处理帐户创建/拣配。

1 /您未指定有效(在您的设备上注册)帐户的电子邮件

GoogleApiClient GAC = new GoogleApiClient.Builder(context)
  //.setAccountName(email)
  .addApi(Drive.API)
  .addScope(Drive.SCOPE_FILE)
  .addConnectionCallbacks(...)
  .addOnConnectionFailedListener(...)
  .build();

和GooPlaySvcs将弹出帐户选择器对话框,允许您的用户选择有效帐户或创建新帐户。您的应用无法知道用户选择/创建的帐户。

2 /您必须指定有效(在您的设备上注册)帐户的电子邮件

GoogleApiClient GAC = new GoogleApiClient.Builder(context)
  .setAccountName(email)
  .addApi(Drive.API)
  .addScope(Drive.SCOPE_FILE)
  .addConnectionCallbacks(...)
  .addOnConnectionFailedListener(...)
  .build();

现在,您如何获得email?您无法指定任意电子邮件。同样,您必须通过account picker使用其中一个已注册的设备:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
...
static final int REQ_ACCPICK = 999;
...
startActivityForResult(AccountPicker.newChooseAccountIntent(null, null,
  new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, true, null, null, null, null), REQ_ACCPICK);
...
@Override
protected void onActivityResult(int request, int rslt, Intent data) {
  if (
    request == REQ_ACCPICK &&
    rslt == RESULT_OK && 
    data != null && data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME) != null
  )
     email = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
     ...   

请按照此code中的REQ_ACCPICK查看此典型处理方式。您必须添加一个客户经理(如上述演示中的UT.AM课程)并保留当前帐户的电子邮件。

祝你好运