安卓有自己的账号管理类AccountManager:
刚刚学习了下如何使用,记录一下:
1、取得账户管理服务:
AccountManager am=AccountManager.get(this);
2、获取所有账户:
Account[] accounts=am.getAccounts();
3、manifest中添加权限:
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
以上是只是获取系统已经有的账号;
下面看一下如何为自己的应用程序添加账户:
1、新建一个AccountAuthenticService 继承Service;
2、在里面添加一个addAccount方法;
具体代码如下:
public class AccountAuthenticatorService extends Service{
private static final String TAG="AccountAuthenticatorService";
public static Bundle addAccount(Context ctx){
AccountManager am=AccountManager.get(ctx); //获取系统中的账户管理服务
Account item=new Account("dengliang", "com.dengliang.agitdemo.account");//新建一个账户(name,type)
am.addAccountExplicitly(item, null, null);//添加到系统中
Log.i(TAG,"addAccount finished!");
return null;
}
}
3、在res下新建xml文件夹并新建authenticator.xml
内容如下:
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="com.dengliang.agitdemo.account"
android:icon="@drawable/icon"
android:smallIcon="@drawable/icon"
android:label="@string/app_name"
/>
注意这里的accountType要对应你在Service中新建账户的type;
4、在manifest文件中添加相应权限,并注册Service:
<service android:exported="true" android:name="com.dengliang.agitdemo.sync.AccountAuthenticatorService">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator"/>
</intent-filter>
<meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/authenticator"/>
</service>
</application>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
注意<meta-date />中的android:resource要与你在第三部中添加的authenticator.xml文件的路径一致;
这样你在主Activity中新建Service并调用addaccount()方法就可以实现添加账户了;
最后的实现效果图: