要求用户在android设备中添加google帐户(如果不存在)。

要求用户在android设备中添加google帐户(如果不存在)。,android,Android,我正在编写一个应用程序,其中我们要求用户将google帐户与应用程序关联,这样我们就可以在不同设备上的应用程序安装之间自动同步服务器端数据 我已经在用了 AccountManager accountManager = AccountManager.get(mContext); Account[] accounts = accountManager.getAccountsByType("com.google"); 以提取可用用户帐户的列表。在这种情况下,我们只使用一个帐户,在多个帐户的情况下,我

我正在编写一个应用程序,其中我们要求用户将google帐户与应用程序关联,这样我们就可以在不同设备上的应用程序安装之间自动同步服务器端数据

我已经在用了

AccountManager accountManager = AccountManager.get(mContext);
Account[] accounts = accountManager.getAccountsByType("com.google");
以提取可用用户帐户的列表。在这种情况下,我们只使用一个帐户,在多个帐户的情况下,我们要求用户选择一个与应用程序关联的帐户。我现在遇到的问题是,设备上没有谷歌账户。我现在正在用这个

context.startActivity(new Intent(android.provider.Settings.ACTION_ADD_ACCOUNT));
强制添加帐户对话框;但问题是,它给了用户一个选择添加何种帐户类型的选项,我们希望通过将用户直接添加到添加谷歌帐户选项中来避免混淆用户。有办法做到这一点吗?

我不完全确定,但:


在底部有一个添加google帐户的代码片段,但我不太确定这是否是您要查找的内容。

类似的内容应该可以:

AccountManager accountMgr = AccountManager.get(mContext);
accountMgr.addAccount("com.google", "ah", null, new Bundle(), (Activity) mContext, null, null);

“ah”是授权令牌类型。

我知道这是一个老问题,但Android提供了另一种解决方案

使用
AccountManager.addAccount()
需要
MANAGE\u ACCOUNTS
权限。我发现,当用户看到你的应用时,他们会犹豫。如果使用
设置,可以避免要求
管理账户
。API 18中添加的额外账户类型
额外:

这将启动添加Google帐户流:

Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT);
intent.putExtra(Settings.EXTRA_ACCOUNT_TYPES, new String[] {"com.google"});
startActivity(intent);

我发现,尽管API 18中添加了
设置.EXTRA\u ACCOUNT\u type
,但它似乎可以在我所有运行ICS或更高版本的设备上运行。不幸的是,它对姜饼不起作用。我不确定它是否可以在API 18之前工作,但到目前为止我已经发现了成功。

该链接上的代码不起作用,但它确实给了我一个指向正确方向的指针。因此,我将投你一票,并添加我找到的答案。你抢先回答了我自己的问题。在创建当前应用程序之前,是否可以在不使用“GET_ACCOUNTS”权限的情况下检查该应用程序的帐户是否存在?这很旧,但“啊”是什么??你说的是令牌类型,但你能解释一下我是如何得到它的吗?我认为,调用AddGoogleAccountDialog是最正确的方法。