使用Android AccountManager添加帐户

时间:2017-02-01 12:19:55

标签: android xamarin.android accountmanager

我有一套应用程序,我的AccountManager文件存放在一个中央应用程序中。我可以在该中央应用中使用AccountManager.AddAccount(),但当我尝试从其他应用使用该方法时,AuthenticatorActivity未启动。我可以调试并看到AddAccount中的所有代码都在执行,但活动从未启动。

这是我的AddAccount方法:

public override Bundle AddAccount(AccountAuthenticatorResponse response, string accountType, string authTokenType, string[] requiredFeatures, Bundle options)
{
    var intent = new Intent(_context, typeof(MyAccountAuthenticatorActivity));
    intent.PutExtra(MyAccountAuthenticatorActivity.ARG_ACCOUNT_TYPE, accountType);
    intent.PutExtra(MyAccountAuthenticatorActivity.ARG_AUTH_TYPE, authTokenType);
    intent.PutExtra(MyAccountAuthenticatorActivity.ARG_IS_ADDING_NEW_ACCOUNT, true);
    intent.PutExtra(AccountManager.KeyAccountAuthenticatorResponse, response);

    var bundle = new Bundle();
    bundle.PutParcelable(AccountManager.KeyIntent, intent);
    return bundle;
}

我在所有应用中使用相同的启动画面,因此调用AddAccount的代码是相同的。

            _accountManager = AccountManager.Get(this);
            var accounts = _accountManager.GetAccountsByType(AccountKeys.ACCOUNT_TYPE);

            //automatically add new account if no users on device yet
            if (accounts.Length == 0)
            {
                _accountManager.AddAccount(AccountKeys.ACCOUNT_TYPE, AccountKeys.AUTH_TYPE, null, null, this, null, null);
                CheckIfFirstRun();
                Finish();
            }

MyAccountAuthenticatorActivity位于一个应用中。正如您所看到的,我正在向AddAccount发送正确的活动上下文,但只有在拥有验证者文件的应用程序中执行这些代码时才会调用StartActivity()

我还缺少哪些其他应用才能打开MyAccountAuthenticatorActivity

0 个答案:

没有答案