Back to project page android.bigredsnapshot.
The source code is released under:
MIT License
If you think the Android project android.bigredsnapshot listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package io.evercam.bigredsnapshot.account; /*from w ww. ja v a2s .co m*/ import java.util.regex.Matcher; import com.google.android.gms.auth.GoogleAuthUtil; import android.accounts.Account; import android.accounts.AccountManager; import android.annotation.TargetApi; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.Build; import android.provider.ContactsContract; import android.telephony.TelephonyManager; import android.util.Patterns; public class AccountUtils { /** * Retrieves the user profile information. * * @param context * the context from which to retrieve the user profile * @return the user profile * @throws Exception */ public static UserProfile getUserProfile(Context context) throws Exception { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH ? getUserProfileOnIcsDevice(context) : getUserProfileOnGingerbreadDevice(context); // return getUserProfileOnGingerbreadDevice(context); } /** * Retrieves the user profile information in a manner supported by * Gingerbread devices. * * @param context * the context from which to retrieve the user's email address * and name * @return a list of the possible user's email address and name */ private static UserProfile getUserProfileOnGingerbreadDevice(Context context) { // Other that using Patterns (API level 8) this works on devices down to // API level 5 final Matcher valid_email_address = Patterns.EMAIL_ADDRESS.matcher(""); final Account[] accounts = AccountManager.get(context).getAccountsByType( GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); UserProfile user_profile = new UserProfile(); // As far as I can tell, there is no way to get the real name or phone // number from the Google account for (Account account : accounts) { if (valid_email_address.reset(account.name).matches()) user_profile .addPossibleEmail(account.name); } // Gets the phone number of the device is the device has one if (context.getPackageManager().hasSystemFeature(Context.TELEPHONY_SERVICE)) { final TelephonyManager telephony = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); user_profile.addPossiblePhoneNumber(telephony.getLine1Number()); } return user_profile; } /** * Retrieves the user profile information in a manner supported by Ice Cream * Sandwich devices. * * @param context * the context from which to retrieve the user's email address * and name * @return a list of the possible user's email address and name */ @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) private static UserProfile getUserProfileOnIcsDevice(Context context) throws Exception { final ContentResolver content = context.getContentResolver(); final Cursor cursor = content.query( // Retrieves data rows for the device user's 'profile' contact Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI, ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION, // Selects only email addresses or names ContactsContract.Contacts.Data.MIMETYPE + "=? OR " + ContactsContract.Contacts.Data.MIMETYPE + "=? OR " + ContactsContract.Contacts.Data.MIMETYPE + "=? OR " + ContactsContract.Contacts.Data.MIMETYPE + "=?", new String[] { ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE }, // Show primary rows first. Note that there won't be a primary // email address if the // user hasn't specified one. ContactsContract.Contacts.Data.IS_PRIMARY + " DESC"); UserProfile userProfile = getUserProfileOnGingerbreadDevice(context); String mime_type; while (cursor.moveToNext()) { mime_type = cursor.getString(ProfileQuery.MIME_TYPE); if (mime_type.equals(ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)) userProfile .addPossibleEmail(cursor.getString(ProfileQuery.EMAIL), cursor.getInt(ProfileQuery.IS_PRIMARY_EMAIL) > 0); else if (mime_type .equals(ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)) userProfile .addPossibleName(cursor.getString(ProfileQuery.GIVEN_NAME) + " " + cursor.getString(ProfileQuery.FAMILY_NAME)); else if (mime_type.equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) userProfile .addPossiblePhoneNumber(cursor.getString(ProfileQuery.PHONE_NUMBER), cursor.getInt(ProfileQuery.IS_PRIMARY_PHONE_NUMBER) > 0); else if (mime_type.equals(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)) userProfile .addPossiblePhoto(Uri.parse(cursor.getString(ProfileQuery.PHOTO))); } cursor.close(); return userProfile; } }