UserInfo.java revision 5dc5a00e7ebadc085ded7e29feacd17e53698486
14b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani/* 24b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * Copyright (C) 2011 The Android Open Source Project 34b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * 44b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * Licensed under the Apache License, Version 2.0 (the "License"); 54b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * you may not use this file except in compliance with the License. 64b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * You may obtain a copy of the License at 74b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * 84b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * http://www.apache.org/licenses/LICENSE-2.0 94b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * 104b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * Unless required by applicable law or agreed to in writing, software 114b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * distributed under the License is distributed on an "AS IS" BASIS, 124b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * See the License for the specific language governing permissions and 144b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * limitations under the License. 154b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani */ 164b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 174b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasanipackage android.content.pm; 184b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 194b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasaniimport android.os.Parcel; 204b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasaniimport android.os.Parcelable; 21b049e212ab7fe8967893c202efcb30fecfdb82fbJeff Sharkeyimport android.os.UserHandle; 224b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 234b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani/** 244b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * Per-user information. 254b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * @hide 264b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani */ 274b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasanipublic class UserInfo implements Parcelable { 28258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani 29258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani /** 6 bits for user type */ 30258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani public static final int FLAG_MASK_USER_TYPE = 0x0000003F; 31258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani 324b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani /** 335dc5a00e7ebadc085ded7e29feacd17e53698486Dianne Hackborn * *************************** NOTE *************************** 345dc5a00e7ebadc085ded7e29feacd17e53698486Dianne Hackborn * These flag values CAN NOT CHANGE because they are written 355dc5a00e7ebadc085ded7e29feacd17e53698486Dianne Hackborn * directly to storage. 365dc5a00e7ebadc085ded7e29feacd17e53698486Dianne Hackborn */ 375dc5a00e7ebadc085ded7e29feacd17e53698486Dianne Hackborn 385dc5a00e7ebadc085ded7e29feacd17e53698486Dianne Hackborn /** 394b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * Primary user. Only one user can have this flag set. Meaning of this 404b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * flag TBD. 414b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani */ 424b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public static final int FLAG_PRIMARY = 0x00000001; 434b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 444b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani /** 454b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * User with administrative privileges. Such a user can create and 464b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * delete users. 474b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani */ 484b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public static final int FLAG_ADMIN = 0x00000002; 494b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 504b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani /** 514b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani * Indicates a guest user that may be transient. 524b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani */ 534b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public static final int FLAG_GUEST = 0x00000004; 544b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 55258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani /** 56258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * Indicates the user has restrictions in privileges, in addition to those for normal users. 57258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani * Exact meaning TBD. For instance, maybe they can't install apps or administer WiFi access pts. 58258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani */ 59258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani public static final int FLAG_RESTRICTED = 0x00000008; 60258848d2ae04f447ff1c18023fa76b139fcc0862Amith Yamasani 615dc5a00e7ebadc085ded7e29feacd17e53698486Dianne Hackborn /** 625dc5a00e7ebadc085ded7e29feacd17e53698486Dianne Hackborn * Indicates that this user has gone through its first-time initialization. 635dc5a00e7ebadc085ded7e29feacd17e53698486Dianne Hackborn */ 645dc5a00e7ebadc085ded7e29feacd17e53698486Dianne Hackborn public static final int FLAG_INITIALIZED = 0x00000010; 655dc5a00e7ebadc085ded7e29feacd17e53698486Dianne Hackborn 664b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public int id; 672a00329c6d55c6cd9166e01963d7410e95d80d21Amith Yamasani public int serialNumber; 684b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public String name; 69b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97aAmith Yamasani public String iconPath; 704b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public int flags; 714b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 724b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public UserInfo(int id, String name, int flags) { 73b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97aAmith Yamasani this(id, name, null, flags); 74b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97aAmith Yamasani } 75b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97aAmith Yamasani 76b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97aAmith Yamasani public UserInfo(int id, String name, String iconPath, int flags) { 774b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani this.id = id; 784b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani this.name = name; 794b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani this.flags = flags; 80b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97aAmith Yamasani this.iconPath = iconPath; 814b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 824b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 834b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public boolean isPrimary() { 844b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani return (flags & FLAG_PRIMARY) == FLAG_PRIMARY; 854b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 864b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 874b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public boolean isAdmin() { 884b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani return (flags & FLAG_ADMIN) == FLAG_ADMIN; 894b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 904b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 914b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public boolean isGuest() { 924b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani return (flags & FLAG_GUEST) == FLAG_GUEST; 934b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 944b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 954b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public UserInfo() { 964b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 974b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 984b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public UserInfo(UserInfo orig) { 994b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani name = orig.name; 100b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97aAmith Yamasani iconPath = orig.iconPath; 1014b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani id = orig.id; 1024b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani flags = orig.flags; 1032a00329c6d55c6cd9166e01963d7410e95d80d21Amith Yamasani serialNumber = orig.serialNumber; 1044b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 1054b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 106b049e212ab7fe8967893c202efcb30fecfdb82fbJeff Sharkey public UserHandle getUserHandle() { 107b049e212ab7fe8967893c202efcb30fecfdb82fbJeff Sharkey return new UserHandle(id); 108b049e212ab7fe8967893c202efcb30fecfdb82fbJeff Sharkey } 109b049e212ab7fe8967893c202efcb30fecfdb82fbJeff Sharkey 1104b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani @Override 1114b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public String toString() { 1120b285499db739ba50f2f839d633e763c70e67f96Amith Yamasani return "UserInfo{" + id + ":" + name + ":" + Integer.toHexString(flags) + "}"; 1134b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 1144b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 1154b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public int describeContents() { 1164b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani return 0; 1174b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 1184b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 1194b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public void writeToParcel(Parcel dest, int parcelableFlags) { 1204b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani dest.writeInt(id); 1214b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani dest.writeString(name); 122b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97aAmith Yamasani dest.writeString(iconPath); 1234b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani dest.writeInt(flags); 1242a00329c6d55c6cd9166e01963d7410e95d80d21Amith Yamasani dest.writeInt(serialNumber); 1254b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 1264b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 1274b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public static final Parcelable.Creator<UserInfo> CREATOR 1284b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani = new Parcelable.Creator<UserInfo>() { 1294b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public UserInfo createFromParcel(Parcel source) { 1304b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani return new UserInfo(source); 1314b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 1324b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani public UserInfo[] newArray(int size) { 1334b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani return new UserInfo[size]; 1344b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 1354b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani }; 1364b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani 1374b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani private UserInfo(Parcel source) { 1384b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani id = source.readInt(); 1394b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani name = source.readString(); 140b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97aAmith Yamasani iconPath = source.readString(); 1414b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani flags = source.readInt(); 1422a00329c6d55c6cd9166e01963d7410e95d80d21Amith Yamasani serialNumber = source.readInt(); 1434b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani } 1444b2e934928a2eb65927bd39197198c28c49efb94Amith Yamasani} 145