android账户取得方法:

方法1:可以使用AccountManager

先在AndroidManifest.xml中加入权限:

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

代码中取得账户的方法:

你可以用AccountManager.getAccountsorAccountManager.getAccountsByType来获取账户列表

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+Account[] accounts = AccountManager.get(context).getAccounts();for (Account account : accounts) {    if (emailPattern.matcher(account.name).matches()) {        String accountName = account.name;        String accountType = account.type;        System.out.println("name:" + accountName + "\n" + "type:" + accountType);    }}

如果登陆的google账户,取出来的类似:

name:xxx@gmail.com

type:com.google

更多有关AccountManager的使用可以参考http://developer.android.com/tools/samples/index.html


方法2:使用ContactsContract.Profile(4.0以上才有)

先在AndroidManifest.xml中加入权限:

<uses-permission android:name="android.permission.READ_PROFILE" /><uses-permission android:name="android.permission.READ_CONTACTS" />

例子代码:

public class ExampleActivity extends Activity implements LoaderManager.LoaderCallbacks<Cursor> {    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        getLoaderManager().initLoader(0, null, this);    }    @Override    public Loader<Cursor> onCreateLoader(int id, Bundle arguments) {        return new CursorLoader(this,                // Retrieve data rows for the device user's 'profile' contact.                Uri.withAppendedPath(                        ContactsContract.Profile.CONTENT_URI,                        ContactsContract.Contacts.Data.CONTENT_DIRECTORY),                ProfileQuery.PROJECTION,                // Select only email addresses.                ContactsContract.Contacts.Data.MIMETYPE + " = ?",                new String[]{ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE},                // Show primary email addresses first. Note that there won't be                // a primary email address if the user hasn't specified one.                ContactsContract.Contacts.Data.IS_PRIMARY + " DESC");    }    @Override    public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {        List<String> emails = new ArrayList<String>();        cursor.moveToFirst();        while (!cursor.isAfterLast()) {            emails.add(cursor.getString(ProfileQuery.ADDRESS));            // Potentially filter on ProfileQuery.IS_PRIMARY            cursor.moveToNext();        }        ...    }    @Override    public void onLoaderReset(Loader<Cursor> cursorLoader) {    }    private interface ProfileQuery {        String[] PROJECTION = {                ContactsContract.CommonDataKinds.Email.ADDRESS,                ContactsContract.CommonDataKinds.Email.IS_PRIMARY,        };        int ADDRESS = 0;        int IS_PRIMARY = 1;    }}


更多相关文章

  1. JS判断终端类型的几种方法
  2. Android非UI线程访问UI线程的方法总结
  3. android 9.0 SD卡权限问题 文件管理器没有权限
  4. 关于Android动态权限的一些疑问
  5. Android 网络权限配置
  6. 查看基于Android 系统单个进程内存、CPU使用情况的几种方法
  7. android 调试方法

随机推荐

  1. Android之自定义适配器
  2. SlidingUpPanel
  3. Android版本和API对应关系
  4. mono for android Main.axml
  5. android中怎么在文字两边划线
  6. Android应用程序剖析
  7. android wear-Drawing Watch Faces
  8. Android(安卓)Interprocess Communicatio
  9. android-环境
  10. Android(安卓)SDK r23