Articles of accountmanager

AccountManager – authToken已设置但peekAuthToken返回null

我正在尝试在AccountManager中添加一个新帐户(在Facebook登录+服务器validation之后)。 这种情况的流程如下: 用户使用Facebook登录 登录完成后我得到了详细信息,并根据我服务器上的数据validation它们 如果一切正常,服务器会发回auth_token(JWT令牌) 拥有用户的详细信息和auth_token我正在通过AccountManager创建一个帐户,一旦创建了帐户,我就为它设置了authToken。 在下次登录时,当用户重新打开应用程序时,我调用getAuthToken,首先尝试通过调用peekAuthToken()来获取缓存的authToken。 问题 在第5点,peekAuthToken返回null但不应该因为我已经为该帐户设置了autToken。 码 public static Bundle handleUserLogin(Context context, User user) { SharedPreferences mPrefs = context.getSharedPreferences(Constants.PREFS_NAME, Context.MODE_PRIVATE); AccountManager am = AccountManager.get(context); Account account = new Account(user.getEmail(), ACCOUNT_TYPE); Account[] accounts = am.getAccountsByType(ACCOUNT_TYPE); boolean isNewAccount = true; for (int i = 0; i < accounts.length; i++) { if (user.getEmail().equalsIgnoreCase(accounts[i].name) && ACCOUNT_TYPE.equalsIgnoreCase(accounts[i].type)) […]

客户经理:Android App未显示在“设置”的“帐户”标签下,

我正在尝试将我的应用程序设置为“帐户部分”。 因此,当用户点击添加帐户时,我的应用名称可见。 完整的代码可以在这里find我创建了一个身份validation服务。 这就是我的清单的样子 我还创建了一个“authenticator.xml” 但我仍然没有在帐户下看到我的应用程序。 我正在关注本教程,但它不起作用。 你能告诉我我做错了什么吗?

当AccountManager删除帐户时,SyncAdapter会收到通知吗?

所以,重申我的问题是,当您转到设置 – >帐户和同步并选择您的SyncAdapter正在与云服务器同步时创建的帐户,并选择删除帐户,就SyncAdapter而言会发生什么? 将显示一个对话框,要求您确认,并且将删除与该帐户关联的手机上的数据。 我不能轻易相信框架可以自动删除我的SyncAdapter存储在本地数据库中的数据,但似乎暗示删除该帐户将(并且我同意应该)删除该数据。 我的SyncAdapter是否有一个附加function可以作为删除帐户的回调来处理从本地数据库中删除所有适当的数据? 也许它必须通过AccountManager来完成; 当帐户被删除时,我的AccountManager会收到通知,从那里我可以在没有SyncAdapter情况下触发数据删除。 编辑:在相关的说明中,同步管理器是否为添加新帐户时同步的每个帐户调用我的SyncAdapter ? 我在添加帐户时看到正在为之前添加的帐户执行的onPerformSync(…)以及刚添加的帐户,并希望停止该操作。

尝试添加帐户时出现SecurityException

我正在尝试使用Android AccountManager 。 我有一个帐户身份validation服务,显示用于输入用户名/密码的UI。 我转到设置/帐户/添加帐户,选择我的新帐户types,然后我看到了UI。 当我单击确定时,我收到以下错误 04-24 14:48:29.334: E/AndroidRuntime(386): java.lang.SecurityException: caller uid 10035 is different than the authenticator’s uid MyAccountAuthenticationService的唯一方法: @Override public IBinder onBind(Intent intent) { return new MyAccountAuthenticator(this).getIBinder(); } MyAccountAuthenticator: @Override public Bundle addAccount(AccountAuthenticatorResponse response, String accountType, String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException { final Intent intent = new Intent(context, MyAccountCreatorActivity.class); intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, […]

Android AccountManager addAccount在回调时抛出OperationCanceledException

我正在开发一个Android应用程序,使用android studio(0.8.2)和API级别19。 我已使用AccountManager实现了身份validation,但在尝试从AccountManager.addAccount中指定的回调返回的AccountManagerFuture中检索数据时遇到exception。 只有在我的应用程序中调用addAccount时才会出现此行为,而MainActivity的onCreate则是精确的。 通过android设置屏幕添加帐户时不会发生此错误。 以下是调用addAccount的代码: mAccounts = mAccountManager.getAccountsByType(mAccountType); if (mAccounts.length == 0) { Log.d(“MainActivity”, “No accounts of type ” + mAccountType); mAccountManager.addAccount( mAccountType, AUTHTOKEN_TYPE_FULL_ACCESS, null, new Bundle(), this, new OnAccountAddComplete(), null ); } 这是回调: private class OnAccountAddComplete implements AccountManagerCallback { @Override public void run(AccountManagerFuture result) { Bundle bundle; try { bundle = result.getResult(); } […]

Android的Google帐户身份validation器支持哪些function?

Android的AccountManager的hasFeatures方法的API文档具有以下关于每个validation器支持哪些function的说明: 帐户function是特定于身份validation器的字符串标记,用于标识布尔帐户属性。 例如,function用于判断Google帐户是否启用了特定服务(例如Google日历或Google Talk)。 function名称及其含义发布在与相关validation器关联的某个位置。 有没有人知道“与所涉及的身份validation器相关的某个地方”实际上是用于Google帐户的身份validation器? 我想知道支持哪些function。

是否可以覆盖帐户和同步“删除帐户”function

我正在开发具有同步适配器和身份validation器的应用程序,用于通过Android帐户管理器添加帐户。 我有以下两个问题: 1)可以覆盖帐户和同步中的“添加帐户”按钮的function,但我找不到覆盖“删除帐户”按钮function的方法 – 这可能吗? 2)我已经读过,身份validation人员可以阻止删除他们的帐户但我无法知道如何…有谁知道如何将其添加到我的身份validation器中? 这样我就可以使用AbstractAccoutnAuthenticator.getAccountRemovalAllowed来实现我想要的function。 谢谢

Accountmanager.addAccount()vs Accountmanager.addAccountExplicitly()

当我们使用Accountmanager.addAccount()创建包含所有参数的帐户时,我们使用Accountmanager.addAccountExplicitly() 。 我用Accountmanager.addAccount()搜索并发现当我们使用Accountmanager.addAccount()它会触发AbstractAccountAuthenticator addAccount事件,但有什么意义呢? 为什么我们应该使用addAccount方法? 大功率的 我们可以这样创建帐户: Account account = new Account(accountname, accountType); mAccountManager.addAccountExplicitly(account, accountPassword, null);

如何从Android上保存的帐户中检索Facebook-AuthToken

我正在尝试使用以下代码检索用于Facebook的AuthToken(由Facebook for Android保存)。 AccountManager am = AccountManager.get(this); Account[] accounts = am.getAccountsByType(“com.facebook.auth.login”); if (accounts.length > 0) { for(int j = 0; j < accounts.length; j++) { Account account = accounts[j]; if(account.type != null && account.type.equals("com.facebook.auth.login")) { Log.e(RuntimeVars.MY_NAME, "FACEBOOK-TYPE FOUND"); am.getAuthToken(account, "com.facebook.auth.login", null, ConversationList.this, new AccountManagerCallback() { public void run(AccountManagerFuture arg0) { try { Bundle b = […]

我们如何控制Android同步适配器首选项?

在尝试编写自定义Android同步适配器时,我遵循了这一点 。 我成功地在常规设置中显示了一个条目(帐户设置),并使用上面示例中的以下代码片段。 代码在常规设置中为我输入了一个条目( 帐户设置 ): 单击帐户设置后,我收到如下错误,设备不必要地重新启动。 ERROR / AndroidRuntime(30057):android.util.AndroidRuntimeException:从Activity上下文外部调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。 这真的是你想要的吗? 我知道这个错误可以通过代码解决。 由于“帐户设置”首选项是基于XML的代码,因此我遇到了错误。 任何人都可以帮助解决问题吗? 我们如何通过代码控制这些偏好?