我正在编写一个应用程序,我们要求用户在其中关联一个 Google 帐户,以便我们可以在不同设备上安装该应用程序时自动同步服务器端数据。
我已经在用了
AccountManager accountManager = AccountManager.get(mContext);
Account[] accounts = accountManager.getAccountsByType("com.google");
拉取可用用户帐户列表。在只有一个的情况下,我们使用它,在多个帐户的情况下,我们要求用户选择一个帐户与应用程序关联。我现在遇到的问题是设备上没有谷歌帐户的情况。我目前正在使用这个
context.startActivity(new Intent(android.provider.Settings.ACTION_ADD_ACCOUNT));
强制添加帐户对话框;但问题是它为用户提供了添加哪种帐户类型的选项,我们希望通过强制他们直接进入添加 Google 帐户选项来避免混淆他们。有办法做到这一点吗?
最佳答案
我知道这是一个老问题了,但 Android 提供了替代解决方案。
使用 AccountManager.addAccount()
需要 MANAGE_ACCOUNTS
权限。我发现用户在看到该权限时会对您的应用犹豫不决。如果您使用 API 18 中添加的 Settings.EXTRA_ACCOUNT_TYPES
额外功能,则可以避免要求 MANAGE_ACCOUNTS
:
http://developer.android.com/reference/android/provider/Settings.html#EXTRA_ACCOUNT_TYPES
这会启动添加 Google 帐户的流程:
Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT);
intent.putExtra(Settings.EXTRA_ACCOUNT_TYPES, new String[] {"com.google"});
startActivity(intent);
我发现即使 Settings.EXTRA_ACCOUNT_TYPES
添加到 API 18,它似乎也适用于我所有运行 ICS 或更高版本的设备。可悲的是,它不适用于 Gingerbread 。我不确定它是否可以在 API 18 之前工作,但到目前为止我已经取得了成功。
关于android - 如果不存在,则要求用户将 google 帐户添加到 android 设备。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6869927/