【问题标题】:Adding account through Account manager通过客户经理添加帐户
【发布时间】:2012-03-19 18:51:50
【问题描述】:

如果我问一个非常明显的问题,我是 android 开发的新手,很抱歉。对于我的应用,我想使用客户经理自动添加一个谷歌帐户。我想使用 addAccount 还是 addAccountExplicitly?假设帐户名称为“platinum”且密码为“software”,我该如何处理。

【问题讨论】:

    标签: android accountmanager


    【解决方案1】:

    试试这个:

    需要许可:

    <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 你能发布你的完整源代码吗?这对我也有帮助。
    • setAccountAuthenticatorResult 是 AccountAuthenticatorActivity 类中定义的方法,请参见此处developer.android.com/reference/android/accounts/…
    • 你能提供一些帮助链接吗?
    • 我已经尝试过完全一样的。我收到异常 java.lang.SecurityException: caller uid 10039 is different than the authenticator's uid everytime.Is it to do with the android:accountType 吗?是你在那里给了包名吗?
    • 虽然这并没有解决我的问题,但我还是要为 ans 的简单性和帮助投赞成票 :) :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多