Android Open Source - android.bigredsnapshot Account Utils






From Project

Back to project page android.bigredsnapshot.

License

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.

Java Source Code

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;
  }
}




Java Source Code List

io.evercam.bigredsnapshot.BigButtonActivity.java
io.evercam.bigredsnapshot.BigRedSnapshot.java
io.evercam.bigredsnapshot.ChooseCameraActivity.java
io.evercam.bigredsnapshot.LoginActivity.java
io.evercam.bigredsnapshot.SignUpActivity.java
io.evercam.bigredsnapshot.SlideActivity.java
io.evercam.bigredsnapshot.SnapshotRequest.java
io.evercam.bigredsnapshot.UrlStatus.java
io.evercam.bigredsnapshot.account.AccountUtils.java
io.evercam.bigredsnapshot.account.ProfileQuery.java
io.evercam.bigredsnapshot.account.UserProfile.java
io.evercam.bigredsnapshot.helper.CustomedDialog.java
io.evercam.bigredsnapshot.helper.PrefsManager.java
io.evercam.bigredsnapshot.helper.PropertyReader.java
io.evercam.bigredsnapshot.tasks.CaptureSnapshotTask.java
io.evercam.bigredsnapshot.tasks.CheckInternetTask.java