通过账户管理器添加账户

8

我是Android开发新手,如果我问了一个非常显而易见的问题,请原谅。对于我的应用程序,我想使用帐户管理器自动添加Google帐户。我应该使用addAccount还是addAccountExplicitly?假设帐户名称为“platinum”,密码为“software”,我该如何操作呢?

1个回答

13

试试这个:

需要权限:

<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/></uses-permission> 
<uses-permission android:name="android.permission.ACCOUNT_MANAGER"></uses-permission> 
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission> 
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>

AuthenticatorActivity.java

public class SleepyAccountAuthenticatorActivity extends AccountAuthenticatorActivity  
{  
protected void onCreate(Bundle icicle)  
{  
    super.onCreate(icicle);  
    setContentView(R.layout.new_account);  
    final Button done = (Button) findViewById(R.id.new_account_done);  
    final EditText server = (EditText) findViewById(R.id.new_account_server);  
    final EditText username = (EditText) findViewById(R.id.new_account_username);  
    final EditText password = (EditText) findViewById(R.id.new_account_password);  
    final Activity self = this;  
    done.setOnClickListener(new OnClickListener() {  
        public void onClick(View v)  
        {  
            //Account
            Account account=new Account(username.getText().  
            toString(), getString(R.string.ACCOUNT_TYPE));  

            Bundle userdata = new Bundle();   
            userdata.putString("SERVER", server.getText().toString());  
            //AccountManager  
            AccountManager am = AccountManager.get(self);  

            if (am.addAccountExplicitly(account, password.  
            getText().toString(), userdata))  
            {  
                Bundle result = new Bundle();  
                result.putString(AccountManager.KEY_ACCOUNT_NAME, username.getText().toString());  
                result.putString(AccountManager.KEY_ACCOUNT_TYPE,getString(R.string.ACCOUNT_TYPE));  
                setAccountAuthenticatorResult(result);  
            }  
            finish();  
        }  
    });  
}  
}

\res\xml\authenticator.xml

<?xml version="1.0" encoding="utf-8"?> 
 <account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" 
 android:accountType="com.yarin.AccountType" 
 android:icon="@drawable/icon" 
 android:smallIcon="@drawable/icon" 
 android:label="@string/ACCOUNT_LABEL" 
 android:accountPreferences="@xml/account_preferences" 
 />

@imran,请问你能否发布你的完整源代码?这也会对我有所帮助。 - Pankaj Kumar
1
setAccountAuthenticatorResult是在AccountAuthenticatorActivity类中定义的方法,请参见此处http://developer.android.com/reference/android/accounts/AccountAuthenticatorActivity.html。 - ρяσѕρєя K
你能提供一些帮助链接吗? - Pankaj Kumar
我已经尝试了完全相同的操作。每次都会出现异常java.lang.SecurityException:调用者uid 10039与验证程序的uid不同。这是否与android:accountType有关?您是否在那里提供了包名称? - AbhishekB
虽然这并没有解决我的问题,但我会因为答案的简单和帮助而点赞 :) :) - AbhishekB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接