19788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintanapackage android.accounts; 29788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 39788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintanaimport android.os.Parcelable; 49788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintanaimport android.os.Parcel; 59788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 6756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana/** 7756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana * A {@link Parcelable} value type that contains information about an account authenticator. 8756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana */ 99788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintanapublic class AuthenticatorDescription implements Parcelable { 10756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** The string that uniquely identifies an authenticator */ 119788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana final public String type; 12756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 13756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** A resource id of a label for the authenticator that is suitable for displaying */ 149788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana final public int labelId; 15756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 16756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** A resource id of a icon for the authenticator */ 17756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana final public int iconId; 18756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 19756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** A resource id of a smaller icon for the authenticator */ 20756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana final public int smallIconId; 21756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 22756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** 23756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana * A resource id for a hierarchy of PreferenceScreen to be added to the settings page for the 24756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana * account. See {@link AbstractAccountAuthenticator} for an example. 25756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana */ 2670e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller final public int accountPreferencesId; 27756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 28756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** The package name that can be used to lookup the resources from above. */ 299788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana final public String packageName; 309788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 31756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** A constructor for a full AuthenticatorDescription */ 32756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana public AuthenticatorDescription(String type, String packageName, int labelId, int iconId, 3370e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller int smallIconId, int prefId) { 34c298a8518a8fd73a303132c7db241f10eb46c5b6Fred Quintana if (type == null) throw new IllegalArgumentException("type cannot be null"); 35c298a8518a8fd73a303132c7db241f10eb46c5b6Fred Quintana if (packageName == null) throw new IllegalArgumentException("packageName cannot be null"); 369788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.type = type; 379788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.packageName = packageName; 389788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.labelId = labelId; 399788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.iconId = iconId; 4070e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.smallIconId = smallIconId; 4170e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.accountPreferencesId = prefId; 429788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 439788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 44756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** 45756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana * A factory method for creating an AuthenticatorDescription that can be used as a key 46756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana * to identify the authenticator by its type. 47756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana */ 48756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 499788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public static AuthenticatorDescription newKey(String type) { 50c298a8518a8fd73a303132c7db241f10eb46c5b6Fred Quintana if (type == null) throw new IllegalArgumentException("type cannot be null"); 519788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return new AuthenticatorDescription(type); 529788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 539788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 549788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana private AuthenticatorDescription(String type) { 559788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.type = type; 569788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.packageName = null; 579788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.labelId = 0; 589788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.iconId = 0; 5970e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.smallIconId = 0; 6070e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.accountPreferencesId = 0; 619788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 629788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 639788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana private AuthenticatorDescription(Parcel source) { 649788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.type = source.readString(); 659788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.packageName = source.readString(); 669788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.labelId = source.readInt(); 679788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.iconId = source.readInt(); 6870e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.smallIconId = source.readInt(); 6970e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.accountPreferencesId = source.readInt(); 709788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 719788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 72756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** @inheritDoc */ 739788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public int describeContents() { 749788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return 0; 759788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 769788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 77756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** Returns the hashcode of the type only. */ 789788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public int hashCode() { 799788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return type.hashCode(); 809788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 819788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 82756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** Compares the type only, suitable for key comparisons. */ 839788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public boolean equals(Object o) { 849788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana if (o == this) return true; 859788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana if (!(o instanceof AuthenticatorDescription)) return false; 869788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana final AuthenticatorDescription other = (AuthenticatorDescription) o; 879788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return type.equals(other.type); 889788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 899788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 905ebbb4a6b3e16f711735ae0615b9a9ea64faad38Fred Quintana public String toString() { 915ebbb4a6b3e16f711735ae0615b9a9ea64faad38Fred Quintana return "AuthenticatorDescription {type=" + type + "}"; 925ebbb4a6b3e16f711735ae0615b9a9ea64faad38Fred Quintana } 935ebbb4a6b3e16f711735ae0615b9a9ea64faad38Fred Quintana 94756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** @inhericDoc */ 959788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public void writeToParcel(Parcel dest, int flags) { 969788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana dest.writeString(type); 979788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana dest.writeString(packageName); 989788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana dest.writeInt(labelId); 999788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana dest.writeInt(iconId); 10070e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller dest.writeInt(smallIconId); 10170e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller dest.writeInt(accountPreferencesId); 1029788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 1039788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 104756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** Used to create the object from a parcel. */ 1059788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public static final Creator<AuthenticatorDescription> CREATOR = 1069788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana new Creator<AuthenticatorDescription>() { 107756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** @inheritDoc */ 1089788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public AuthenticatorDescription createFromParcel(Parcel source) { 1099788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return new AuthenticatorDescription(source); 1109788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 1119788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 112756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** @inheritDoc */ 1139788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public AuthenticatorDescription[] newArray(int size) { 1149788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return new AuthenticatorDescription[size]; 1159788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 1169788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana }; 1179788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana} 118