diff options
author | Jeff Hamilton <jham@android.com> | 2009-11-20 20:04:03 -0800 |
---|---|---|
committer | Jeff Hamilton <jham@android.com> | 2009-12-17 13:47:36 -0600 |
commit | f3960b1271c65d64f9836894af600948bd804e7c (patch) | |
tree | 648ae3cc7993da4681ea6eec4c724402199dc2d9 | |
parent | 492604e95239c1427dd5acb9109eb8acaaafc50d (diff) | |
download | frameworks_base-f3960b1271c65d64f9836894af600948bd804e7c.zip frameworks_base-f3960b1271c65d64f9836894af600948bd804e7c.tar.gz frameworks_base-f3960b1271c65d64f9836894af600948bd804e7c.tar.bz2 |
Remove the IM provider contract class.
Change-Id: Ia644689021aca3e429d42727dfd6262b6986dfd2
-rw-r--r-- | api/current.xml | 189 | ||||
-rw-r--r-- | core/java/android/provider/Contacts.java | 66 | ||||
-rw-r--r-- | core/java/android/provider/ContactsContract.java | 27 | ||||
-rw-r--r-- | core/java/android/provider/Im.java | 2358 | ||||
-rw-r--r-- | preloaded-classes | 6 |
5 files changed, 268 insertions, 2378 deletions
diff --git a/api/current.xml b/api/current.xml index c2e84be..d7bc614 100644 --- a/api/current.xml +++ b/api/current.xml @@ -121077,6 +121077,50 @@ deprecated="deprecated" visibility="public" > +<field name="AVAILABLE" + type="int" + transient="false" + volatile="false" + value="5" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="AWAY" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="DO_NOT_DISTURB" + type="int" + transient="false" + volatile="false" + value="4" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="IDLE" + type="int" + transient="false" + volatile="false" + value="3" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="IM_ACCOUNT" type="java.lang.String" transient="false" @@ -121110,6 +121154,61 @@ visibility="public" > </field> +<field name="INVISIBLE" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="OFFLINE" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="PRESENCE_CUSTOM_STATUS" + type="java.lang.String" + transient="false" + volatile="false" + value=""status"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="PRESENCE_STATUS" + type="java.lang.String" + transient="false" + volatile="false" + value=""mode"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="PRIORITY" + type="java.lang.String" + transient="false" + volatile="false" + value=""priority"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> </interface> <class name="Contacts.Settings" extends="java.lang.Object" @@ -125328,6 +125427,72 @@ deprecated="not deprecated" visibility="protected" > +<field name="AVAILABLE" + type="int" + transient="false" + volatile="false" + value="5" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="AWAY" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="DO_NOT_DISTURB" + type="int" + transient="false" + volatile="false" + value="4" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="IDLE" + type="int" + transient="false" + volatile="false" + value="3" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="INVISIBLE" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="OFFLINE" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="PRESENCE" type="java.lang.String" transient="false" @@ -125339,6 +125504,28 @@ visibility="public" > </field> +<field name="PRESENCE_CUSTOM_STATUS" + type="java.lang.String" + transient="false" + volatile="false" + value=""status"" + static="true" + final="true" + deprecated="deprecated" + visibility="public" +> +</field> +<field name="PRESENCE_STATUS" + type="java.lang.String" + transient="false" + volatile="false" + value=""mode"" + static="true" + final="true" + deprecated="deprecated" + visibility="public" +> +</field> <field name="STATUS" type="java.lang.String" transient="false" @@ -206191,7 +206378,7 @@ deprecated="not deprecated" visibility="public" > -<parameter name="t" type="T"> +<parameter name="arg0" type="T"> </parameter> </method> </interface> diff --git a/core/java/android/provider/Contacts.java b/core/java/android/provider/Contacts.java index 1a38166..a29ecb5 100644 --- a/core/java/android/provider/Contacts.java +++ b/core/java/android/provider/Contacts.java @@ -1334,8 +1334,26 @@ public class Contacts { } /** + * TODO find a place to put the canonical version of these. + */ + interface ProviderNames { + // + //NOTE: update Contacts.java with new providers when they're added. + // + String YAHOO = "Yahoo"; + String GTALK = "GTalk"; + String MSN = "MSN"; + String ICQ = "ICQ"; + String AIM = "AIM"; + String XMPP = "XMPP"; + String JABBER = "JABBER"; + String SKYPE = "SKYPE"; + String QQ = "QQ"; + } + + /** * This looks up the provider name defined in - * {@link android.provider.Im.ProviderNames} from the predefined IM protocol id. + * from the predefined IM protocol id. * This is used for interacting with the IM application. * * @param protocol the protocol ID @@ -1348,21 +1366,21 @@ public class Contacts { public static String lookupProviderNameFromId(int protocol) { switch (protocol) { case PROTOCOL_GOOGLE_TALK: - return Im.ProviderNames.GTALK; + return ProviderNames.GTALK; case PROTOCOL_AIM: - return Im.ProviderNames.AIM; + return ProviderNames.AIM; case PROTOCOL_MSN: - return Im.ProviderNames.MSN; + return ProviderNames.MSN; case PROTOCOL_YAHOO: - return Im.ProviderNames.YAHOO; + return ProviderNames.YAHOO; case PROTOCOL_ICQ: - return Im.ProviderNames.ICQ; + return ProviderNames.ICQ; case PROTOCOL_JABBER: - return Im.ProviderNames.JABBER; + return ProviderNames.JABBER; case PROTOCOL_SKYPE: - return Im.ProviderNames.SKYPE; + return ProviderNames.SKYPE; case PROTOCOL_QQ: - return Im.ProviderNames.QQ; + return ProviderNames.QQ; } return null; } @@ -1532,7 +1550,35 @@ public class Contacts { * @deprecated see {@link android.provider.ContactsContract} */ @Deprecated - public interface PresenceColumns extends Im.CommonPresenceColumns { + public interface PresenceColumns { + /** + * The priority, an integer, used by XMPP presence + * <P>Type: INTEGER</P> + */ + String PRIORITY = "priority"; + + /** + * The server defined status. + * <P>Type: INTEGER (one of the values below)</P> + */ + String PRESENCE_STATUS = ContactsContract.StatusUpdates.PRESENCE; + + /** + * Presence Status definition + */ + int OFFLINE = ContactsContract.StatusUpdates.OFFLINE; + int INVISIBLE = ContactsContract.StatusUpdates.INVISIBLE; + int AWAY = ContactsContract.StatusUpdates.AWAY; + int IDLE = ContactsContract.StatusUpdates.IDLE; + int DO_NOT_DISTURB = ContactsContract.StatusUpdates.DO_NOT_DISTURB; + int AVAILABLE = ContactsContract.StatusUpdates.AVAILABLE; + + /** + * The user defined status line. + * <P>Type: TEXT</P> + */ + String PRESENCE_CUSTOM_STATUS = ContactsContract.StatusUpdates.STATUS; + /** * The IM service the presence is coming from. Formatted using either * {@link Contacts.ContactMethods#encodePredefinedImProtocol} or diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java index e98d8ee..ed9198e 100644 --- a/core/java/android/provider/ContactsContract.java +++ b/core/java/android/provider/ContactsContract.java @@ -1601,18 +1601,39 @@ public final class ContactsContract { * @see StatusUpdates * @see ContactsContract.Data */ - protected interface StatusColumns extends Im.CommonPresenceColumns { + protected interface StatusColumns { /** * Contact's latest presence level. * <P>Type: INTEGER (one of the values below)</P> */ - public static final String PRESENCE = PRESENCE_STATUS; + public static final String PRESENCE = "mode"; + + /** + * @deprecated use {@link #PRESENCE} + */ + @Deprecated + public static final String PRESENCE_STATUS = PRESENCE; + + /* + * Presence Status definition + */ + int OFFLINE = 0; + int INVISIBLE = 1; + int AWAY = 2; + int IDLE = 3; + int DO_NOT_DISTURB = 4; + int AVAILABLE = 5; /** * Contact latest status update. * <p>Type: TEXT</p> */ - public static final String STATUS = PRESENCE_CUSTOM_STATUS; + public static final String STATUS = "status"; + + /** + * @deprecated use {@link #STATUS} + */ + public static final String PRESENCE_CUSTOM_STATUS = STATUS; /** * The absolute time in milliseconds when the latest status was inserted/updated. diff --git a/core/java/android/provider/Im.java b/core/java/android/provider/Im.java deleted file mode 100644 index ff52199..0000000 --- a/core/java/android/provider/Im.java +++ /dev/null @@ -1,2358 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.provider; - -import android.content.ContentQueryMap; -import android.content.ContentResolver; -import android.content.ContentUris; -import android.content.ContentValues; -import android.database.Cursor; -import android.net.Uri; -import android.os.Handler; - -import java.util.HashMap; - -/** - * The GTalk provider stores all information about roster contacts, chat messages, presence, etc. - * - * @hide - */ -public class Im { - /** - * no public constructor since this is a utility class - */ - private Im() {} - - /** - * The Columns for IM providers - */ - public interface ProviderColumns { - /** - * The name of the IM provider - * <P>Type: TEXT</P> - */ - String NAME = "name"; - - /** - * The full name of the provider - * <P>Type: TEXT</P> - */ - String FULLNAME = "fullname"; - - /** - * The category for the provider, used to form intent. - * <P>Type: TEXT</P> - */ - String CATEGORY = "category"; - - /** - * The url users should visit to create a new account for this provider - * <P>Type: TEXT</P> - */ - String SIGNUP_URL = "signup_url"; - } - - /** - * Known names corresponding to the {@link ProviderColumns#NAME} column - */ - public interface ProviderNames { - // - //NOTE: update Contacts.java with new providers when they're added. - // - String YAHOO = "Yahoo"; - String GTALK = "GTalk"; - String MSN = "MSN"; - String ICQ = "ICQ"; - String AIM = "AIM"; - String XMPP = "XMPP"; - String JABBER = "JABBER"; - String SKYPE = "SKYPE"; - String QQ = "QQ"; - } - - /** - * This table contains the IM providers - */ - public static final class Provider implements BaseColumns, ProviderColumns { - private Provider() {} - - public static final long getProviderIdForName(ContentResolver cr, String providerName) { - String[] selectionArgs = new String[1]; - selectionArgs[0] = providerName; - - Cursor cursor = cr.query(CONTENT_URI, - PROVIDER_PROJECTION, - NAME+"=?", - selectionArgs, null); - - long retVal = 0; - try { - if (cursor.moveToFirst()) { - retVal = cursor.getLong(cursor.getColumnIndexOrThrow(_ID)); - } - } finally { - cursor.close(); - } - - return retVal; - } - - public static final String getProviderNameForId(ContentResolver cr, long providerId) { - Cursor cursor = cr.query(CONTENT_URI, - PROVIDER_PROJECTION, - _ID + "=" + providerId, - null, null); - - String retVal = null; - try { - if (cursor.moveToFirst()) { - retVal = cursor.getString(cursor.getColumnIndexOrThrow(NAME)); - } - } finally { - cursor.close(); - } - - return retVal; - } - - private static final String[] PROVIDER_PROJECTION = new String[] { - _ID, - NAME - }; - - public static final String ACTIVE_ACCOUNT_ID = "account_id"; - public static final String ACTIVE_ACCOUNT_USERNAME = "account_username"; - public static final String ACTIVE_ACCOUNT_PW = "account_pw"; - public static final String ACTIVE_ACCOUNT_LOCKED = "account_locked"; - public static final String ACTIVE_ACCOUNT_KEEP_SIGNED_IN = "account_keepSignedIn"; - public static final String ACCOUNT_PRESENCE_STATUS = "account_presenceStatus"; - public static final String ACCOUNT_CONNECTION_STATUS = "account_connStatus"; - - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/providers"); - - public static final Uri CONTENT_URI_WITH_ACCOUNT = - Uri.parse("content://com.google.android.providers.talk/providers/account"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of - * people. - */ - public static final String CONTENT_TYPE = - "vnd.android.cursor.dir/gtalk-providers"; - - public static final String CONTENT_ITEM_TYPE = - "vnd.android.cursor.item/gtalk-providers"; - - /** - * The default sort order for this table - */ - public static final String DEFAULT_SORT_ORDER = "name ASC"; - } - - /** - * The columns for IM accounts. There can be more than one account for each IM provider. - */ - public interface AccountColumns { - /** - * The name of the account - * <P>Type: TEXT</P> - */ - String NAME = "name"; - - /** - * The IM provider for this account - * <P>Type: INTEGER</P> - */ - String PROVIDER = "provider"; - - /** - * The username for this account - * <P>Type: TEXT</P> - */ - String USERNAME = "username"; - - /** - * The password for this account - * <P>Type: TEXT</P> - */ - String PASSWORD = "pw"; - - /** - * A boolean value indicates if the account is active. - * <P>Type: INTEGER</P> - */ - String ACTIVE = "active"; - - /** - * A boolean value indicates if the account is locked (not editable) - * <P>Type: INTEGER</P> - */ - String LOCKED = "locked"; - - /** - * A boolean value to indicate whether this account is kept signed in. - * <P>Type: INTEGER</P> - */ - String KEEP_SIGNED_IN = "keep_signed_in"; - - /** - * A boolean value indiciating the last login state for this account - * <P>Type: INTEGER</P> - */ - String LAST_LOGIN_STATE = "last_login_state"; - } - - /** - * This table contains the IM accounts. - */ - public static final class Account implements BaseColumns, AccountColumns { - private Account() {} - - public static final long getProviderIdForAccount(ContentResolver cr, long accountId) { - Cursor cursor = cr.query(CONTENT_URI, - PROVIDER_PROJECTION, - _ID + "=" + accountId, - null /* selection args */, - null /* sort order */); - - long providerId = 0; - - try { - if (cursor.moveToFirst()) { - providerId = cursor.getLong(PROVIDER_COLUMN); - } - } finally { - cursor.close(); - } - - return providerId; - } - - private static final String[] PROVIDER_PROJECTION = new String[] { PROVIDER }; - private static final int PROVIDER_COLUMN = 0; - - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/accounts"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of - * account. - */ - public static final String CONTENT_TYPE = - "vnd.android.cursor.dir/gtalk-accounts"; - - /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single - * account. - */ - public static final String CONTENT_ITEM_TYPE = - "vnd.android.cursor.item/gtalk-accounts"; - - /** - * The default sort order for this table - */ - public static final String DEFAULT_SORT_ORDER = "name ASC"; - - } - - /** - * Connection status - */ - public interface ConnectionStatus { - /** - * The connection is offline, not logged in. - */ - int OFFLINE = 0; - - /** - * The connection is attempting to connect. - */ - int CONNECTING = 1; - - /** - * The connection is suspended due to network not available. - */ - int SUSPENDED = 2; - - /** - * The connection is logged in and online. - */ - int ONLINE = 3; - } - - public interface AccountStatusColumns { - /** - * account id - * <P>Type: INTEGER</P> - */ - String ACCOUNT = "account"; - - /** - * User's presence status, see definitions in {#link CommonPresenceColumn} - * <P>Type: INTEGER</P> - */ - String PRESENCE_STATUS = "presenceStatus"; - - /** - * The connection status of this account, see {#link ConnectionStatus} - * <P>Type: INTEGER</P> - */ - String CONNECTION_STATUS = "connStatus"; - } - - public static final class AccountStatus implements BaseColumns, AccountStatusColumns { - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/accountStatus"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of account status. - */ - public static final String CONTENT_TYPE = - "vnd.android.cursor.dir/gtalk-account-status"; - - /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single account status. - */ - public static final String CONTENT_ITEM_TYPE = - "vnd.android.cursor.item/gtalk-account-status"; - - /** - * The default sort order for this table - */ - public static final String DEFAULT_SORT_ORDER = "name ASC"; - } - - /** - * Columns from the Contacts table. - */ - public interface ContactsColumns { - /** - * The username - * <P>Type: TEXT</P> - */ - String USERNAME = "username"; - - /** - * The nickname or display name - * <P>Type: TEXT</P> - */ - String NICKNAME = "nickname"; - - /** - * The IM provider for this contact - * <P>Type: INTEGER</P> - */ - String PROVIDER = "provider"; - - /** - * The account (within a IM provider) for this contact - * <P>Type: INTEGER</P> - */ - String ACCOUNT = "account"; - - /** - * The contactList this contact belongs to - * <P>Type: INTEGER</P> - */ - String CONTACTLIST = "contactList"; - - /** - * Contact type - * <P>Type: INTEGER</P> - */ - String TYPE = "type"; - - /** - * normal IM contact - */ - int TYPE_NORMAL = 0; - /** - * temporary contact, someone not in the list of contacts that we - * subscribe presence for. Usually created because of the user is - * having a chat session with this contact. - */ - int TYPE_TEMPORARY = 1; - /** - * temporary contact created for group chat. - */ - int TYPE_GROUP = 2; - /** - * blocked contact. - */ - int TYPE_BLOCKED = 3; - /** - * the contact is hidden. The client should always display this contact to the user. - */ - int TYPE_HIDDEN = 4; - /** - * the contact is pinned. The client should always display this contact to the user. - */ - int TYPE_PINNED = 5; - - /** - * Contact subscription status - * <P>Type: INTEGER</P> - */ - String SUBSCRIPTION_STATUS = "subscriptionStatus"; - - /** - * no pending subscription - */ - int SUBSCRIPTION_STATUS_NONE = 0; - /** - * requested to subscribe - */ - int SUBSCRIPTION_STATUS_SUBSCRIBE_PENDING = 1; - /** - * requested to unsubscribe - */ - int SUBSCRIPTION_STATUS_UNSUBSCRIBE_PENDING = 2; - - /** - * Contact subscription type - * <P>Type: INTEGER </P> - */ - String SUBSCRIPTION_TYPE = "subscriptionType"; - - /** - * The user and contact have no interest in each other's presence. - */ - int SUBSCRIPTION_TYPE_NONE = 0; - /** - * The user wishes to stop receiving presence updates from the contact. - */ - int SUBSCRIPTION_TYPE_REMOVE = 1; - /** - * The user is interested in receiving presence updates from the contact. - */ - int SUBSCRIPTION_TYPE_TO = 2; - /** - * The contact is interested in receiving presence updates from the user. - */ - int SUBSCRIPTION_TYPE_FROM = 3; - /** - * The user and contact have a mutual interest in each other's presence. - */ - int SUBSCRIPTION_TYPE_BOTH = 4; - /** - * This is a special type reserved for pending subscription requests - */ - int SUBSCRIPTION_TYPE_INVITATIONS = 5; - - /** - * Quick Contact: derived from Google Contact Extension's "message_count" attribute. - * <P>Type: INTEGER</P> - */ - String QUICK_CONTACT = "qc"; - - /** - * Google Contact Extension attribute - * - * Rejected: a boolean value indicating whether a subscription request from - * this client was ever rejected by the user. "true" indicates that it has. - * This is provided so that a client can block repeated subscription requests. - * <P>Type: INTEGER</P> - */ - String REJECTED = "rejected"; - - /** - * Off The Record status: 0 for disabled, 1 for enabled - * <P>Type: INTEGER </P> - */ - String OTR = "otr"; - } - - /** - * This defines the different type of values of {@link ContactsColumns#OTR} - */ - public interface OffTheRecordType { - /* - * Off the record not turned on - */ - int DISABLED = 0; - /** - * Off the record turned on, but we don't know who turned it on - */ - int ENABLED = 1; - /** - * Off the record turned on by the user - */ - int ENABLED_BY_USER = 2; - /** - * Off the record turned on by the buddy - */ - int ENABLED_BY_BUDDY = 3; - }; - - /** - * This table contains contacts. - */ - public static final class Contacts implements BaseColumns, - ContactsColumns, PresenceColumns, ChatsColumns { - /** - * no public constructor since this is a utility class - */ - private Contacts() {} - - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/contacts"); - - /** - * The content:// style URL for contacts joined with presence - */ - public static final Uri CONTENT_URI_WITH_PRESENCE = - Uri.parse("content://com.google.android.providers.talk/contactsWithPresence"); - - /** - * The content:// style URL for barebone contacts, not joined with any other table - */ - public static final Uri CONTENT_URI_CONTACTS_BAREBONE = - Uri.parse("content://com.google.android.providers.talk/contactsBarebone"); - - /** - * The content:// style URL for contacts who have an open chat session - */ - public static final Uri CONTENT_URI_CHAT_CONTACTS = - Uri.parse("content://com.google.android.providers.talk/contacts_chatting"); - - /** - * The content:// style URL for contacts who have been blocked - */ - public static final Uri CONTENT_URI_BLOCKED_CONTACTS = - Uri.parse("content://com.google.android.providers.talk/contacts/blocked"); - - /** - * The content:// style URL for contacts by provider and account - */ - public static final Uri CONTENT_URI_CONTACTS_BY = - Uri.parse("content://com.google.android.providers.talk/contacts"); - - /** - * The content:// style URL for contacts by provider and account, - * and who have an open chat session - */ - public static final Uri CONTENT_URI_CHAT_CONTACTS_BY = - Uri.parse("content://com.google.android.providers.talk/contacts/chatting"); - - /** - * The content:// style URL for contacts by provider and account, - * and who are online - */ - public static final Uri CONTENT_URI_ONLINE_CONTACTS_BY = - Uri.parse("content://com.google.android.providers.talk/contacts/online"); - - /** - * The content:// style URL for contacts by provider and account, - * and who are offline - */ - public static final Uri CONTENT_URI_OFFLINE_CONTACTS_BY = - Uri.parse("content://com.google.android.providers.talk/contacts/offline"); - - /** - * The content:// style URL for operations on bulk contacts - */ - public static final Uri BULK_CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/bulk_contacts"); - - /** - * The content:// style URL for the count of online contacts in each - * contact list by provider and account. - */ - public static final Uri CONTENT_URI_ONLINE_COUNT = - Uri.parse("content://com.google.android.providers.talk/contacts/onlineCount"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of - * people. - */ - public static final String CONTENT_TYPE = "vnd.android.cursor.dir/gtalk-contacts"; - - /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single - * person. - */ - public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/gtalk-contacts"; - - /** - * The default sort order for this table - */ - public static final String DEFAULT_SORT_ORDER = - "subscriptionType DESC, last_message_date DESC," + - " mode DESC, nickname COLLATE UNICODE ASC"; - - public static final String CHATS_CONTACT = "chats_contact"; - - public static final String AVATAR_HASH = "avatars_hash"; - - public static final String AVATAR_DATA = "avatars_data"; - } - - /** - * Columns from the ContactList table. - */ - public interface ContactListColumns { - String NAME = "name"; - String PROVIDER = "provider"; - String ACCOUNT = "account"; - } - - /** - * This table contains the contact lists. - */ - public static final class ContactList implements BaseColumns, - ContactListColumns { - private ContactList() {} - - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/contactLists"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of - * people. - */ - public static final String CONTENT_TYPE = - "vnd.android.cursor.dir/gtalk-contactLists"; - - /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single - * person. - */ - public static final String CONTENT_ITEM_TYPE = - "vnd.android.cursor.item/gtalk-contactLists"; - - /** - * The default sort order for this table - */ - public static final String DEFAULT_SORT_ORDER = "name COLLATE UNICODE ASC"; - - public static final String PROVIDER_NAME = "provider_name"; - - public static final String ACCOUNT_NAME = "account_name"; - } - - /** - * Columns from the BlockedList table. - */ - public interface BlockedListColumns { - /** - * The username of the blocked contact. - * <P>Type: TEXT</P> - */ - String USERNAME = "username"; - - /** - * The nickname of the blocked contact. - * <P>Type: TEXT</P> - */ - String NICKNAME = "nickname"; - - /** - * The provider id of the blocked contact. - * <P>Type: INT</P> - */ - String PROVIDER = "provider"; - - /** - * The account id of the blocked contact. - * <P>Type: INT</P> - */ - String ACCOUNT = "account"; - } - - /** - * This table contains blocked lists - */ - public static final class BlockedList implements BaseColumns, BlockedListColumns { - private BlockedList() {} - - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/blockedList"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of - * people. - */ - public static final String CONTENT_TYPE = - "vnd.android.cursor.dir/gtalk-blockedList"; - - /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single - * person. - */ - public static final String CONTENT_ITEM_TYPE = - "vnd.android.cursor.item/gtalk-blockedList"; - - /** - * The default sort order for this table - */ - public static final String DEFAULT_SORT_ORDER = "nickname ASC"; - - public static final String PROVIDER_NAME = "provider_name"; - - public static final String ACCOUNT_NAME = "account_name"; - - public static final String AVATAR_DATA = "avatars_data"; - } - - /** - * Columns from the contactsEtag table - */ - public interface ContactsEtagColumns { - /** - * The roster etag, computed by the server, stored on the client. There is one etag - * per account roster. - * <P>Type: TEXT</P> - */ - String ETAG = "etag"; - - /** - * The OTR etag, computed by the server, stored on the client. There is one OTR etag - * per account roster. - * <P>Type: TEXT</P> - */ - String OTR_ETAG = "otr_etag"; - - /** - * The account id for the etag. - * <P> Type: INTEGER </P> - */ - String ACCOUNT = "account"; - } - - public static final class ContactsEtag implements BaseColumns, ContactsEtagColumns { - private ContactsEtag() {} - - public static final Cursor query(ContentResolver cr, - String[] projection) { - return cr.query(CONTENT_URI, projection, null, null, null); - } - - public static final Cursor query(ContentResolver cr, - String[] projection, String where, String orderBy) { - return cr.query(CONTENT_URI, projection, where, - null, orderBy == null ? null : orderBy); - } - - public static final String getRosterEtag(ContentResolver resolver, long accountId) { - String retVal = null; - - Cursor c = resolver.query(CONTENT_URI, - CONTACT_ETAG_PROJECTION, - ACCOUNT + "=" + accountId, - null /* selection args */, - null /* sort order */); - - try { - if (c.moveToFirst()) { - retVal = c.getString(COLUMN_ETAG); - } - } finally { - c.close(); - } - - return retVal; - } - - public static final String getOtrEtag(ContentResolver resolver, long accountId) { - String retVal = null; - - Cursor c = resolver.query(CONTENT_URI, - CONTACT_OTR_ETAG_PROJECTION, - ACCOUNT + "=" + accountId, - null /* selection args */, - null /* sort order */); - - try { - if (c.moveToFirst()) { - retVal = c.getString(COLUMN_OTR_ETAG); - } - } finally { - c.close(); - } - - return retVal; - } - - private static final String[] CONTACT_ETAG_PROJECTION = new String[] { - Im.ContactsEtag.ETAG // 0 - }; - - private static int COLUMN_ETAG = 0; - - private static final String[] CONTACT_OTR_ETAG_PROJECTION = new String[] { - Im.ContactsEtag.OTR_ETAG // 0 - }; - - private static int COLUMN_OTR_ETAG = 0; - - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/contactsEtag"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of - * people. - */ - public static final String CONTENT_TYPE = - "vnd.android.cursor.dir/gtalk-contactsEtag"; - - /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single - * person. - */ - public static final String CONTENT_ITEM_TYPE = - "vnd.android.cursor.item/gtalk-contactsEtag"; - } - - /** - * Message type definition - */ - public interface MessageType { - /* sent message */ - int OUTGOING = 0; - /* received message */ - int INCOMING = 1; - /* presence became available */ - int PRESENCE_AVAILABLE = 2; - /* presence became away */ - int PRESENCE_AWAY = 3; - /* presence became DND (busy) */ - int PRESENCE_DND = 4; - /* presence became unavailable */ - int PRESENCE_UNAVAILABLE = 5; - /* the message is converted to a group chat */ - int CONVERT_TO_GROUPCHAT = 6; - /* generic status */ - int STATUS = 7; - /* the message cannot be sent now, but will be sent later */ - int POSTPONED = 8; - /* off The Record status is turned off */ - int OTR_IS_TURNED_OFF = 9; - /* off the record status is turned on */ - int OTR_IS_TURNED_ON = 10; - /* off the record status turned on by user */ - int OTR_TURNED_ON_BY_USER = 11; - /* off the record status turned on by buddy */ - int OTR_TURNED_ON_BY_BUDDY = 12; - } - - /** - * The common columns for messages table - */ - public interface MessageColumns { - /** - * The thread_id column stores the contact id of the contact the message belongs to. - * For groupchat messages, the thread_id stores the group id, which is the contact id - * of the temporary group contact created for the groupchat. So there should be no - * collision between groupchat message thread id and regular message thread id. - */ - String THREAD_ID = "thread_id"; - - /** - * The nickname. This is used for groupchat messages to indicate the participant's - * nickname. For non groupchat messages, this field should be left empty. - */ - String NICKNAME = "nickname"; - - /** - * The body - * <P>Type: TEXT</P> - */ - String BODY = "body"; - - /** - * The date this message is sent or received. This represents the display date for - * the message. - * <P>Type: INTEGER</P> - */ - String DATE = "date"; - - /** - * The real date for this message. While 'date' can be modified by the client - * to account for server time skew, the real_date is the original timestamp set - * by the server for incoming messages. - * <P>Type: INTEGER</P> - */ - String REAL_DATE = "real_date"; - - /** - * Message Type, see {@link MessageType} - * <P>Type: INTEGER</P> - */ - String TYPE = "type"; - - /** - * Error Code: 0 means no error. - * <P>Type: INTEGER </P> - */ - String ERROR_CODE = "err_code"; - - /** - * Error Message - * <P>Type: TEXT</P> - */ - String ERROR_MESSAGE = "err_msg"; - - /** - * Packet ID, auto assigned by the GTalkService for outgoing messages or the - * GTalk server for incoming messages. The packet id field is optional for messages, - * so it could be null. - * <P>Type: STRING</P> - */ - String PACKET_ID = "packet_id"; - - /** - * Is groupchat message or not - * <P>Type: INTEGER</P> - */ - String IS_GROUP_CHAT = "is_muc"; - - /** - * A hint that the UI should show the sent time of this message - * <P>Type: INTEGER</P> - */ - String DISPLAY_SENT_TIME = "show_ts"; - - /* - * For rows which have been consolidated this is the row id of the - * row into which they have been consolidated. - */ - String CONSOLIDATION_KEY = "consolidation_key"; - } - - /** - * This table contains messages. - */ - public static final class Messages implements BaseColumns, MessageColumns { - /** - * no public constructor since this is a utility class - */ - private Messages() {} - - /** - * Gets the Uri to query messages by thread id. - * - * @param threadId the thread id of the message. - * @return the Uri - */ - public static final Uri getContentUriByThreadId(long threadId) { - Uri.Builder builder = CONTENT_URI_MESSAGES_BY_THREAD_ID.buildUpon(); - ContentUris.appendId(builder, threadId); - return builder.build(); - } - - /** - * @deprecated - * - * Gets the Uri to query messages by account and contact. - * - * @param accountId the account id of the contact. - * @param username the user name of the contact. - * @return the Uri - */ - public static final Uri getContentUriByContact(long accountId, String username) { - Uri.Builder builder = CONTENT_URI_MESSAGES_BY_ACCOUNT_AND_CONTACT.buildUpon(); - ContentUris.appendId(builder, accountId); - builder.appendPath(username); - return builder.build(); - } - - /** - * Gets the Uri to query messages by provider. - * - * @param providerId the service provider id. - * @return the Uri - */ - public static final Uri getContentUriByProvider(long providerId) { - Uri.Builder builder = CONTENT_URI_MESSAGES_BY_PROVIDER.buildUpon(); - ContentUris.appendId(builder, providerId); - return builder.build(); - } - - /** - * Gets the Uri to query off the record messages by account. - * - * @param accountId the account id. - * @return the Uri - */ - public static final Uri getContentUriByAccount(long accountId) { - Uri.Builder builder = CONTENT_URI_BY_ACCOUNT.buildUpon(); - ContentUris.appendId(builder, accountId); - return builder.build(); - } - - /** - * Gets the Uri to query off the record messages by thread id. - * - * @param threadId the thread id of the message. - * @return the Uri - */ - public static final Uri getOtrMessagesContentUriByThreadId(long threadId) { - Uri.Builder builder = OTR_MESSAGES_CONTENT_URI_BY_THREAD_ID.buildUpon(); - ContentUris.appendId(builder, threadId); - return builder.build(); - } - - /** - * @deprecated - * - * Gets the Uri to query off the record messages by account and contact. - * - * @param accountId the account id of the contact. - * @param username the user name of the contact. - * @return the Uri - */ - public static final Uri getOtrMessagesContentUriByContact(long accountId, String username) { - Uri.Builder builder = OTR_MESSAGES_CONTENT_URI_BY_ACCOUNT_AND_CONTACT.buildUpon(); - ContentUris.appendId(builder, accountId); - builder.appendPath(username); - return builder.build(); - } - - /** - * Gets the Uri to query off the record messages by provider. - * - * @param providerId the service provider id. - * @return the Uri - */ - public static final Uri getOtrMessagesContentUriByProvider(long providerId) { - Uri.Builder builder = OTR_MESSAGES_CONTENT_URI_BY_PROVIDER.buildUpon(); - ContentUris.appendId(builder, providerId); - return builder.build(); - } - - /** - * Gets the Uri to query off the record messages by account. - * - * @param accountId the account id. - * @return the Uri - */ - public static final Uri getOtrMessagesContentUriByAccount(long accountId) { - Uri.Builder builder = OTR_MESSAGES_CONTENT_URI_BY_ACCOUNT.buildUpon(); - ContentUris.appendId(builder, accountId); - return builder.build(); - } - - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/messages"); - - /** - * The content:// style URL for messages by thread id - */ - public static final Uri CONTENT_URI_MESSAGES_BY_THREAD_ID = - Uri.parse("content://com.google.android.providers.talk/messagesByThreadId"); - - /** - * The content:// style URL for messages by account and contact - */ - public static final Uri CONTENT_URI_MESSAGES_BY_ACCOUNT_AND_CONTACT = - Uri.parse("content://com.google.android.providers.talk/messagesByAcctAndContact"); - - /** - * The content:// style URL for messages by provider - */ - public static final Uri CONTENT_URI_MESSAGES_BY_PROVIDER = - Uri.parse("content://com.google.android.providers.talk/messagesByProvider"); - - /** - * The content:// style URL for messages by account - */ - public static final Uri CONTENT_URI_BY_ACCOUNT = - Uri.parse("content://com.google.android.providers.talk/messagesByAccount"); - - /** - * The content:// style url for off the record messages - */ - public static final Uri OTR_MESSAGES_CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/otrMessages"); - - /** - * The content:// style url for off the record messages by thread id - */ - public static final Uri OTR_MESSAGES_CONTENT_URI_BY_THREAD_ID = - Uri.parse("content://com.google.android.providers.talk/otrMessagesByThreadId"); - - /** - * The content:// style url for off the record messages by account and contact - */ - public static final Uri OTR_MESSAGES_CONTENT_URI_BY_ACCOUNT_AND_CONTACT = - Uri.parse("content://com.google.android.providers.talk/otrMessagesByAcctAndContact"); - - /** - * The content:// style URL for off the record messages by provider - */ - public static final Uri OTR_MESSAGES_CONTENT_URI_BY_PROVIDER = - Uri.parse("content://com.google.android.providers.talk/otrMessagesByProvider"); - - /** - * The content:// style URL for off the record messages by account - */ - public static final Uri OTR_MESSAGES_CONTENT_URI_BY_ACCOUNT = - Uri.parse("content://com.google.android.providers.talk/otrMessagesByAccount"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of - * people. - */ - public static final String CONTENT_TYPE = - "vnd.android.cursor.dir/gtalk-messages"; - - /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single - * person. - */ - public static final String CONTENT_ITEM_TYPE = - "vnd.android.cursor.item/gtalk-messages"; - - /** - * The default sort order for this table - */ - public static final String DEFAULT_SORT_ORDER = "date ASC"; - - /** - * The "contact" column. This is not a real column in the messages table, but a - * temoprary column created when querying for messages (joined with the contacts table) - */ - public static final String CONTACT = "contact"; - } - - /** - * Columns for the GroupMember table. - */ - public interface GroupMemberColumns { - /** - * The id of the group this member belongs to. - * <p>Type: INTEGER</p> - */ - String GROUP = "groupId"; - - /** - * The full name of this member. - * <p>Type: TEXT</p> - */ - String USERNAME = "username"; - - /** - * The nick name of this member. - * <p>Type: TEXT</p> - */ - String NICKNAME = "nickname"; - } - - public final static class GroupMembers implements GroupMemberColumns { - private GroupMembers(){} - - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/groupMembers"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of - * group members. - */ - public static final String CONTENT_TYPE = - "vnd.android.cursor.dir/gtalk-groupMembers"; - - /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single - * group member. - */ - public static final String CONTENT_ITEM_TYPE = - "vnd.android.cursor.item/gtalk-groupMembers"; - } - - /** - * Columns from the Invitation table. - */ - public interface InvitationColumns { - /** - * The provider id. - * <p>Type: INTEGER</p> - */ - String PROVIDER = "providerId"; - - /** - * The account id. - * <p>Type: INTEGER</p> - */ - String ACCOUNT = "accountId"; - - /** - * The invitation id. - * <p>Type: TEXT</p> - */ - String INVITE_ID = "inviteId"; - - /** - * The name of the sender of the invitation. - * <p>Type: TEXT</p> - */ - String SENDER = "sender"; - - /** - * The name of the group which the sender invite you to join. - * <p>Type: TEXT</p> - */ - String GROUP_NAME = "groupName"; - - /** - * A note - * <p>Type: TEXT</p> - */ - String NOTE = "note"; - - /** - * The current status of the invitation. - * <p>Type: TEXT</p> - */ - String STATUS = "status"; - - int STATUS_PENDING = 0; - int STATUS_ACCEPTED = 1; - int STATUS_REJECTED = 2; - } - - /** - * This table contains the invitations received from others. - */ - public final static class Invitation implements InvitationColumns, - BaseColumns { - private Invitation() { - } - - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/invitations"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of - * invitations. - */ - public static final String CONTENT_TYPE = - "vnd.android.cursor.dir/gtalk-invitations"; - - /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single - * invitation. - */ - public static final String CONTENT_ITEM_TYPE = - "vnd.android.cursor.item/gtalk-invitations"; - } - - /** - * Columns from the Avatars table - */ - public interface AvatarsColumns { - /** - * The contact this avatar belongs to - * <P>Type: TEXT</P> - */ - String CONTACT = "contact"; - - String PROVIDER = "provider_id"; - - String ACCOUNT = "account_id"; - - /** - * The hash of the image data - * <P>Type: TEXT</P> - */ - String HASH = "hash"; - - /** - * raw image data - * <P>Type: BLOB</P> - */ - String DATA = "data"; - } - - /** - * This table contains avatars. - */ - public static final class Avatars implements BaseColumns, AvatarsColumns { - /** - * no public constructor since this is a utility class - */ - private Avatars() {} - - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/avatars"); - - /** - * The content:// style URL for avatars by provider, account and contact - */ - public static final Uri CONTENT_URI_AVATARS_BY = - Uri.parse("content://com.google.android.providers.talk/avatarsBy"); - - /** - * The MIME type of {@link #CONTENT_URI} providing the avatars - */ - public static final String CONTENT_TYPE = "vnd.android.cursor.dir/gtalk-avatars"; - - /** - * The MIME type of a {@link #CONTENT_URI} - */ - public static final String CONTENT_ITEM_TYPE = - "vnd.android.cursor.item/gtalk-avatars"; - - /** - * The default sort order for this table - */ - public static final String DEFAULT_SORT_ORDER = "contact ASC"; - - } - - /** - * Common presence columns shared between the IM and contacts presence tables - */ - public interface CommonPresenceColumns { - /** - * The priority, an integer, used by XMPP presence - * <P>Type: INTEGER</P> - */ - String PRIORITY = "priority"; - - /** - * The server defined status. - * <P>Type: INTEGER (one of the values below)</P> - */ - String PRESENCE_STATUS = "mode"; - - /** - * Presence Status definition - */ - int OFFLINE = 0; - int INVISIBLE = 1; - int AWAY = 2; - int IDLE = 3; - int DO_NOT_DISTURB = 4; - int AVAILABLE = 5; - - /** - * The user defined status line. - * <P>Type: TEXT</P> - */ - String PRESENCE_CUSTOM_STATUS = "status"; - } - - /** - * Columns from the Presence table. - */ - public interface PresenceColumns extends CommonPresenceColumns { - /** - * The contact id - * <P>Type: INTEGER</P> - */ - String CONTACT_ID = "contact_id"; - - /** - * The contact's JID resource, only relevant for XMPP contact - * <P>Type: TEXT</P> - */ - String JID_RESOURCE = "jid_resource"; - - /** - * The contact's client type - */ - String CLIENT_TYPE = "client_type"; - - /** - * client type definitions - */ - int CLIENT_TYPE_DEFAULT = 0; - int CLIENT_TYPE_MOBILE = 1; - int CLIENT_TYPE_ANDROID = 2; - } - - /** - * Contains presence infomation for contacts. - */ - public static final class Presence implements BaseColumns, PresenceColumns { - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/presence"); - - /** - * The content URL for Talk presences for an account - */ - public static final Uri CONTENT_URI_BY_ACCOUNT = - Uri.parse("content://com.google.android.providers.talk/presence/account"); - - /** - * The content:// style URL for operations on bulk contacts - */ - public static final Uri BULK_CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/bulk_presence"); - - /** - * The content:// style URL for seeding presences for a given account id. - */ - public static final Uri SEED_PRESENCE_BY_ACCOUNT_CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/seed_presence/account"); - - /** - * The MIME type of a {@link #CONTENT_URI} providing a directory of presence - */ - public static final String CONTENT_TYPE = "vnd.android.cursor.dir/gtalk-presence"; - - /** - * The default sort order for this table - */ - public static final String DEFAULT_SORT_ORDER = "mode DESC"; - } - - /** - * Columns from the Chats table. - */ - public interface ChatsColumns { - /** - * The contact ID this chat belongs to. The value is a long. - * <P>Type: INT</P> - */ - String CONTACT_ID = "contact_id"; - - /** - * The GTalk JID resource. The value is a string. - * <P>Type: TEXT</P> - */ - String JID_RESOURCE = "jid_resource"; - - /** - * Whether this is a groupchat or not. - * <P>Type: INT</P> - */ - String GROUP_CHAT = "groupchat"; - - /** - * The last unread message. This both indicates that there is an - * unread message, and what the message is. - * <P>Type: TEXT</P> - */ - String LAST_UNREAD_MESSAGE = "last_unread_message"; - - /** - * The last message timestamp - * <P>Type: INT</P> - */ - String LAST_MESSAGE_DATE = "last_message_date"; - - /** - * A message that is being composed. This indicates that there was a - * message being composed when the chat screen was shutdown, and what the - * message is. - * <P>Type: TEXT</P> - */ - String UNSENT_COMPOSED_MESSAGE = "unsent_composed_message"; - - /** - * A value from 0-9 indicating which quick-switch chat screen slot this - * chat is occupying. If none (for instance, this is the 12th active chat) - * then the value is -1. - * <P>Type: INT</P> - */ - String SHORTCUT = "shortcut"; - } - - /** - * Contains ongoing chat sessions. - */ - public static final class Chats implements BaseColumns, ChatsColumns { - /** - * no public constructor since this is a utility class - */ - private Chats() {} - - /** - * The content:// style URL for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/chats"); - - /** - * The content URL for all chats that belong to the account - */ - public static final Uri CONTENT_URI_BY_ACCOUNT = - Uri.parse("content://com.google.android.providers.talk/chats/account"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of chats. - */ - public static final String CONTENT_TYPE = "vnd.android.cursor.dir/gtalk-chats"; - - /** - * The MIME type of a {@link #CONTENT_URI} subdirectory of a single chat. - */ - public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/gtalk-chats"; - - /** - * The default sort order for this table - */ - public static final String DEFAULT_SORT_ORDER = "last_message_date ASC"; - } - - /** - * Columns from session cookies table. Used for IMPS. - */ - public static interface SessionCookiesColumns { - String NAME = "name"; - String VALUE = "value"; - String PROVIDER = "provider"; - String ACCOUNT = "account"; - } - - /** - * Contains IMPS session cookies. - */ - public static class SessionCookies implements SessionCookiesColumns, BaseColumns { - private SessionCookies() { - } - - /** - * The content:// style URI for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/sessionCookies"); - - /** - * The content:// style URL for session cookies by provider and account - */ - public static final Uri CONTENT_URI_SESSION_COOKIES_BY = - Uri.parse("content://com.google.android.providers.talk/sessionCookiesBy"); - - /** - * The MIME type of {@link #CONTENT_URI} providing a directory of - * people. - */ - public static final String CONTENT_TYPE = "vnd.android-dir/gtalk-sessionCookies"; - } - - /** - * Columns from ProviderSettings table - */ - public static interface ProviderSettingsColumns { - /** - * The id in database of the related provider - * - * <P>Type: INT</P> - */ - String PROVIDER = "provider"; - - /** - * The name of the setting - * <P>Type: TEXT</P> - */ - String NAME = "name"; - - /** - * The value of the setting - * <P>Type: TEXT</P> - */ - String VALUE = "value"; - } - - public static class ProviderSettings implements ProviderSettingsColumns { - private ProviderSettings() { - } - - /** - * The content:// style URI for this table - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/providerSettings"); - - /** - * The MIME type of {@link #CONTENT_URI} providing provider settings - */ - public static final String CONTENT_TYPE = "vnd.android-dir/gtalk-providerSettings"; - - /** - * A boolean value to indicate whether this provider should show the offline contacts - */ - public static final String SHOW_OFFLINE_CONTACTS = "show_offline_contacts"; - - /** controls whether or not the GTalk service automatically connect to server. */ - public static final String SETTING_AUTOMATICALLY_CONNECT_GTALK = "gtalk_auto_connect"; - - /** controls whether or not the GTalk service will be automatically started after boot */ - public static final String SETTING_AUTOMATICALLY_START_SERVICE = "auto_start_service"; - - /** controls whether or not the offline contacts will be hided */ - public static final String SETTING_HIDE_OFFLINE_CONTACTS = "hide_offline_contacts"; - - /** controls whether or not enable the GTalk notification */ - public static final String SETTING_ENABLE_NOTIFICATION = "enable_notification"; - - /** specifies whether or not to vibrate */ - public static final String SETTING_VIBRATE = "vibrate"; - - /** specifies the Uri string of the ringtone */ - public static final String SETTING_RINGTONE = "ringtone"; - - /** specifies the Uri of the default ringtone */ - public static final String SETTING_RINGTONE_DEFAULT = - "content://settings/system/notification_sound"; - - /** specifies whether or not to show mobile indicator to friends */ - public static final String SETTING_SHOW_MOBILE_INDICATOR = "mobile_indicator"; - - /** specifies whether or not to show as away when device is idle */ - public static final String SETTING_SHOW_AWAY_ON_IDLE = "show_away_on_idle"; - - /** specifies whether or not to upload heartbeat stat upon login */ - public static final String SETTING_UPLOAD_HEARTBEAT_STAT = "upload_heartbeat_stat"; - - /** specifies the last heartbeat interval received from the server */ - public static final String SETTING_HEARTBEAT_INTERVAL = "heartbeat_interval"; - - /** specifiy the JID resource used for Google Talk connection */ - public static final String SETTING_JID_RESOURCE = "jid_resource"; - - /** - * Used for reliable message queue (RMQ). This is for storing the last rmq id received - * from the GTalk server - */ - public static final String LAST_RMQ_RECEIVED = "last_rmq_rec"; - - /** - * Query the settings of the provider specified by id - * - * @param cr - * the relative content resolver - * @param providerId - * the specified id of provider - * @return a HashMap which contains all the settings for the specified - * provider - */ - public static HashMap<String, String> queryProviderSettings(ContentResolver cr, - long providerId) { - HashMap<String, String> settings = new HashMap<String, String>(); - - String[] projection = { NAME, VALUE }; - Cursor c = cr.query(ContentUris.withAppendedId(CONTENT_URI, providerId), projection, null, null, null); - if (c == null) { - return null; - } - - while(c.moveToNext()) { - settings.put(c.getString(0), c.getString(1)); - } - - c.close(); - - return settings; - } - - /** - * Get the string value of setting which is specified by provider id and the setting name. - * - * @param cr The ContentResolver to use to access the settings table. - * @param providerId The id of the provider. - * @param settingName The name of the setting. - * @return The value of the setting if the setting exist, otherwise return null. - */ - public static String getStringValue(ContentResolver cr, long providerId, String settingName) { - String ret = null; - Cursor c = getSettingValue(cr, providerId, settingName); - if (c != null) { - ret = c.getString(0); - c.close(); - } - - return ret; - } - - /** - * Get the boolean value of setting which is specified by provider id and the setting name. - * - * @param cr The ContentResolver to use to access the settings table. - * @param providerId The id of the provider. - * @param settingName The name of the setting. - * @return The value of the setting if the setting exist, otherwise return false. - */ - public static boolean getBooleanValue(ContentResolver cr, long providerId, String settingName) { - boolean ret = false; - Cursor c = getSettingValue(cr, providerId, settingName); - if (c != null) { - ret = c.getInt(0) != 0; - c.close(); - } - return ret; - } - - private static Cursor getSettingValue(ContentResolver cr, long providerId, String settingName) { - Cursor c = cr.query(ContentUris.withAppendedId(CONTENT_URI, providerId), new String[]{VALUE}, NAME + "=?", - new String[]{settingName}, null); - if (c != null) { - if (!c.moveToFirst()) { - c.close(); - return null; - } - } - return c; - } - - /** - * Save a long value of setting in the table providerSetting. - * - * @param cr The ContentProvider used to access the providerSetting table. - * @param providerId The id of the provider. - * @param name The name of the setting. - * @param value The value of the setting. - */ - public static void putLongValue(ContentResolver cr, long providerId, String name, - long value) { - ContentValues v = new ContentValues(3); - v.put(PROVIDER, providerId); - v.put(NAME, name); - v.put(VALUE, value); - - cr.insert(CONTENT_URI, v); - } - - /** - * Save a boolean value of setting in the table providerSetting. - * - * @param cr The ContentProvider used to access the providerSetting table. - * @param providerId The id of the provider. - * @param name The name of the setting. - * @param value The value of the setting. - */ - public static void putBooleanValue(ContentResolver cr, long providerId, String name, - boolean value) { - ContentValues v = new ContentValues(3); - v.put(PROVIDER, providerId); - v.put(NAME, name); - v.put(VALUE, Boolean.toString(value)); - - cr.insert(CONTENT_URI, v); - } - - /** - * Save a string value of setting in the table providerSetting. - * - * @param cr The ContentProvider used to access the providerSetting table. - * @param providerId The id of the provider. - * @param name The name of the setting. - * @param value The value of the setting. - */ - public static void putStringValue(ContentResolver cr, long providerId, String name, - String value) { - ContentValues v = new ContentValues(3); - v.put(PROVIDER, providerId); - v.put(NAME, name); - v.put(VALUE, value); - - cr.insert(CONTENT_URI, v); - } - - /** - * A convenience method to set whether or not the GTalk service should be started - * automatically. - * - * @param contentResolver The ContentResolver to use to access the settings table - * @param autoConnect Whether the GTalk service should be started automatically. - */ - public static void setAutomaticallyConnectGTalk(ContentResolver contentResolver, - long providerId, boolean autoConnect) { - putBooleanValue(contentResolver, providerId, SETTING_AUTOMATICALLY_CONNECT_GTALK, - autoConnect); - } - - /** - * A convenience method to set whether or not the offline contacts should be hided - * - * @param contentResolver The ContentResolver to use to access the setting table - * @param hideOfflineContacts Whether the offline contacts should be hided - */ - public static void setHideOfflineContacts(ContentResolver contentResolver, - long providerId, boolean hideOfflineContacts) { - putBooleanValue(contentResolver, providerId, SETTING_HIDE_OFFLINE_CONTACTS, - hideOfflineContacts); - } - - /** - * A convenience method to set whether or not enable the GTalk notification. - * - * @param contentResolver The ContentResolver to use to access the setting table. - * @param enable Whether enable the GTalk notification - */ - public static void setEnableNotification(ContentResolver contentResolver, long providerId, - boolean enable) { - putBooleanValue(contentResolver, providerId, SETTING_ENABLE_NOTIFICATION, enable); - } - - /** - * A convenience method to set whether or not to vibrate. - * - * @param contentResolver The ContentResolver to use to access the setting table. - * @param vibrate Whether or not to vibrate - */ - public static void setVibrate(ContentResolver contentResolver, long providerId, - boolean vibrate) { - putBooleanValue(contentResolver, providerId, SETTING_VIBRATE, vibrate); - } - - /** - * A convenience method to set the Uri String of the ringtone. - * - * @param contentResolver The ContentResolver to use to access the setting table. - * @param ringtoneUri The Uri String of the ringtone to be set. - */ - public static void setRingtoneURI(ContentResolver contentResolver, long providerId, - String ringtoneUri) { - putStringValue(contentResolver, providerId, SETTING_RINGTONE, ringtoneUri); - } - - /** - * A convenience method to set whether or not to show mobile indicator. - * - * @param contentResolver The ContentResolver to use to access the setting table. - * @param showMobileIndicator Whether or not to show mobile indicator. - */ - public static void setShowMobileIndicator(ContentResolver contentResolver, long providerId, - boolean showMobileIndicator) { - putBooleanValue(contentResolver, providerId, SETTING_SHOW_MOBILE_INDICATOR, - showMobileIndicator); - } - - /** - * A convenience method to set whether or not to show as away when device is idle. - * - * @param contentResolver The ContentResolver to use to access the setting table. - * @param showAway Whether or not to show as away when device is idle. - */ - public static void setShowAwayOnIdle(ContentResolver contentResolver, - long providerId, boolean showAway) { - putBooleanValue(contentResolver, providerId, SETTING_SHOW_AWAY_ON_IDLE, showAway); - } - - /** - * A convenience method to set whether or not to upload heartbeat stat. - * - * @param contentResolver The ContentResolver to use to access the setting table. - * @param uploadStat Whether or not to upload heartbeat stat. - */ - public static void setUploadHeartbeatStat(ContentResolver contentResolver, - long providerId, boolean uploadStat) { - putBooleanValue(contentResolver, providerId, SETTING_UPLOAD_HEARTBEAT_STAT, uploadStat); - } - - /** - * A convenience method to set the heartbeat interval last received from the server. - * - * @param contentResolver The ContentResolver to use to access the setting table. - * @param interval The heartbeat interval last received from the server. - */ - public static void setHeartbeatInterval(ContentResolver contentResolver, - long providerId, long interval) { - putLongValue(contentResolver, providerId, SETTING_HEARTBEAT_INTERVAL, interval); - } - - /** - * A convenience method to set the jid resource. - */ - public static void setJidResource(ContentResolver contentResolver, - long providerId, String jidResource) { - putStringValue(contentResolver, providerId, SETTING_JID_RESOURCE, jidResource); - } - - public static class QueryMap extends ContentQueryMap { - private ContentResolver mContentResolver; - private long mProviderId; - - public QueryMap(ContentResolver contentResolver, long providerId, boolean keepUpdated, - Handler handlerForUpdateNotifications) { - super(contentResolver.query(CONTENT_URI, - new String[] {NAME,VALUE}, - PROVIDER + "=" + providerId, - null, // no selection args - null), // no sort order - NAME, keepUpdated, handlerForUpdateNotifications); - mContentResolver = contentResolver; - mProviderId = providerId; - } - - /** - * Set if the GTalk service should automatically connect to server. - * - * @param autoConnect if the GTalk service should auto connect to server. - */ - public void setAutomaticallyConnectToGTalkServer(boolean autoConnect) { - ProviderSettings.setAutomaticallyConnectGTalk(mContentResolver, mProviderId, - autoConnect); - } - - /** - * Check if the GTalk service should automatically connect to server. - * @return if the GTalk service should automatically connect to server. - */ - public boolean getAutomaticallyConnectToGTalkServer() { - return getBoolean(SETTING_AUTOMATICALLY_CONNECT_GTALK, - true /* default to automatically sign in */); - } - - /** - * Set whether or not the offline contacts should be hided. - * - * @param hideOfflineContacts Whether or not the offline contacts should be hided. - */ - public void setHideOfflineContacts(boolean hideOfflineContacts) { - ProviderSettings.setHideOfflineContacts(mContentResolver, mProviderId, - hideOfflineContacts); - } - - /** - * Check if the offline contacts should be hided. - * - * @return Whether or not the offline contacts should be hided. - */ - public boolean getHideOfflineContacts() { - return getBoolean(SETTING_HIDE_OFFLINE_CONTACTS, - false/* by default not hide the offline contacts*/); - } - - /** - * Set whether or not enable the GTalk notification. - * - * @param enable Whether or not enable the GTalk notification. - */ - public void setEnableNotification(boolean enable) { - ProviderSettings.setEnableNotification(mContentResolver, mProviderId, enable); - } - - /** - * Check if the GTalk notification is enabled. - * - * @return Whether or not enable the GTalk notification. - */ - public boolean getEnableNotification() { - return getBoolean(SETTING_ENABLE_NOTIFICATION, - true/* by default enable the notification */); - } - - /** - * Set whether or not to vibrate on GTalk notification. - * - * @param vibrate Whether or not to vibrate. - */ - public void setVibrate(boolean vibrate) { - ProviderSettings.setVibrate(mContentResolver, mProviderId, vibrate); - } - - /** - * Gets whether or not to vibrate on GTalk notification. - * - * @return Whether or not to vibrate. - */ - public boolean getVibrate() { - return getBoolean(SETTING_VIBRATE, false /* by default disable vibrate */); - } - - /** - * Set the Uri for the ringtone. - * - * @param ringtoneUri The Uri of the ringtone to be set. - */ - public void setRingtoneURI(String ringtoneUri) { - ProviderSettings.setRingtoneURI(mContentResolver, mProviderId, ringtoneUri); - } - - /** - * Get the Uri String of the current ringtone. - * - * @return The Uri String of the current ringtone. - */ - public String getRingtoneURI() { - return getString(SETTING_RINGTONE, SETTING_RINGTONE_DEFAULT); - } - - /** - * Set whether or not to show mobile indicator to friends. - * - * @param showMobile whether or not to show mobile indicator. - */ - public void setShowMobileIndicator(boolean showMobile) { - ProviderSettings.setShowMobileIndicator(mContentResolver, mProviderId, showMobile); - } - - /** - * Gets whether or not to show mobile indicator. - * - * @return Whether or not to show mobile indicator. - */ - public boolean getShowMobileIndicator() { - return getBoolean(SETTING_SHOW_MOBILE_INDICATOR, - true /* by default show mobile indicator */); - } - - /** - * Set whether or not to show as away when device is idle. - * - * @param showAway whether or not to show as away when device is idle. - */ - public void setShowAwayOnIdle(boolean showAway) { - ProviderSettings.setShowAwayOnIdle(mContentResolver, mProviderId, showAway); - } - - /** - * Get whether or not to show as away when device is idle. - * - * @return Whether or not to show as away when device is idle. - */ - public boolean getShowAwayOnIdle() { - return getBoolean(SETTING_SHOW_AWAY_ON_IDLE, - true /* by default show as away on idle*/); - } - - /** - * Set whether or not to upload heartbeat stat. - * - * @param uploadStat whether or not to upload heartbeat stat. - */ - public void setUploadHeartbeatStat(boolean uploadStat) { - ProviderSettings.setUploadHeartbeatStat(mContentResolver, mProviderId, uploadStat); - } - - /** - * Get whether or not to upload heartbeat stat. - * - * @return Whether or not to upload heartbeat stat. - */ - public boolean getUploadHeartbeatStat() { - return getBoolean(SETTING_UPLOAD_HEARTBEAT_STAT, - false /* by default do not upload */); - } - - /** - * Set the last received heartbeat interval from the server. - * - * @param interval the last received heartbeat interval from the server. - */ - public void setHeartbeatInterval(long interval) { - ProviderSettings.setHeartbeatInterval(mContentResolver, mProviderId, interval); - } - - /** - * Get the last received heartbeat interval from the server. - * - * @return the last received heartbeat interval from the server. - */ - public long getHeartbeatInterval() { - return getLong(SETTING_HEARTBEAT_INTERVAL, 0L /* an invalid default interval */); - } - - /** - * Set the JID resource. - * - * @param jidResource the jid resource to be stored. - */ - public void setJidResource(String jidResource) { - ProviderSettings.setJidResource(mContentResolver, mProviderId, jidResource); - } - /** - * Get the JID resource used for the Google Talk connection - * - * @return the JID resource stored. - */ - public String getJidResource() { - return getString(SETTING_JID_RESOURCE, null); - } - - /** - * Convenience function for retrieving a single settings value - * as a boolean. - * - * @param name The name of the setting to retrieve. - * @param def Value to return if the setting is not defined. - * @return The setting's current value, or 'def' if it is not defined. - */ - private boolean getBoolean(String name, boolean def) { - ContentValues values = getValues(name); - return values != null ? values.getAsBoolean(VALUE) : def; - } - - /** - * Convenience function for retrieving a single settings value - * as a String. - * - * @param name The name of the setting to retrieve. - * @param def The value to return if the setting is not defined. - * @return The setting's current value or 'def' if it is not defined. - */ - private String getString(String name, String def) { - ContentValues values = getValues(name); - return values != null ? values.getAsString(VALUE) : def; - } - - /** - * Convenience function for retrieving a single settings value - * as an Integer. - * - * @param name The name of the setting to retrieve. - * @param def The value to return if the setting is not defined. - * @return The setting's current value or 'def' if it is not defined. - */ - private int getInteger(String name, int def) { - ContentValues values = getValues(name); - return values != null ? values.getAsInteger(VALUE) : def; - } - - /** - * Convenience function for retrieving a single settings value - * as a Long. - * - * @param name The name of the setting to retrieve. - * @param def The value to return if the setting is not defined. - * @return The setting's current value or 'def' if it is not defined. - */ - private long getLong(String name, long def) { - ContentValues values = getValues(name); - return values != null ? values.getAsLong(VALUE) : def; - } - } - - } - - - /** - * Columns for GTalk branding resource map cache table. This table caches the result of - * loading the branding resources to speed up GTalk landing page start. - */ - public interface BrandingResourceMapCacheColumns { - /** - * The provider ID - * <P>Type: INTEGER</P> - */ - String PROVIDER_ID = "provider_id"; - /** - * The application resource ID - * <P>Type: INTEGER</P> - */ - String APP_RES_ID = "app_res_id"; - /** - * The plugin resource ID - * <P>Type: INTEGER</P> - */ - String PLUGIN_RES_ID = "plugin_res_id"; - } - - /** - * The table for caching the result of loading GTalk branding resources. - */ - public static final class BrandingResourceMapCache - implements BaseColumns, BrandingResourceMapCacheColumns { - /** - * The content:// style URL for this table. - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/brandingResMapCache"); - } - - - - /** - * //TODO: move these to MCS specific provider. - * The following are MCS stuff, and should really live in a separate provider specific to - * MCS code. - */ - - /** - * Columns from OutgoingRmq table - */ - public interface OutgoingRmqColumns { - String RMQ_ID = "rmq_id"; - String TIMESTAMP = "ts"; - String DATA = "data"; - String PROTOBUF_TAG = "type"; - } - - /** - * //TODO: we should really move these to their own provider and database. - * The table for storing outgoing rmq packets. - */ - public static final class OutgoingRmq implements BaseColumns, OutgoingRmqColumns { - private static String[] RMQ_ID_PROJECTION = new String[] { - RMQ_ID, - }; - - /** - * queryHighestRmqId - * - * @param resolver the content resolver - * @return the highest rmq id assigned to the rmq packet, or 0 if there are no rmq packets - * in the OutgoingRmq table. - */ - public static final long queryHighestRmqId(ContentResolver resolver) { - Cursor cursor = resolver.query(Im.OutgoingRmq.CONTENT_URI_FOR_HIGHEST_RMQ_ID, - RMQ_ID_PROJECTION, - null, // selection - null, // selection args - null // sort - ); - - long retVal = 0; - try { - //if (DBG) log("initializeRmqid: cursor.count= " + cursor.count()); - - if (cursor.moveToFirst()) { - retVal = cursor.getLong(cursor.getColumnIndexOrThrow(RMQ_ID)); - } - } finally { - cursor.close(); - } - - return retVal; - } - - /** - * The content:// style URL for this table. - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/outgoingRmqMessages"); - - /** - * The content:// style URL for the highest rmq id for the outgoing rmq messages - */ - public static final Uri CONTENT_URI_FOR_HIGHEST_RMQ_ID = - Uri.parse("content://com.google.android.providers.talk/outgoingHighestRmqId"); - - /** - * The default sort order for this table. - */ - public static final String DEFAULT_SORT_ORDER = "rmq_id ASC"; - } - - /** - * Columns for the LastRmqId table, which stores a single row for the last client rmq id - * sent to the server. - */ - public interface LastRmqIdColumns { - String RMQ_ID = "rmq_id"; - } - - /** - * //TODO: move these out into their own provider and database - * The table for storing the last client rmq id sent to the server. - */ - public static final class LastRmqId implements BaseColumns, LastRmqIdColumns { - private static String[] PROJECTION = new String[] { - RMQ_ID, - }; - - /** - * queryLastRmqId - * - * queries the last rmq id saved in the LastRmqId table. - * - * @param resolver the content resolver. - * @return the last rmq id stored in the LastRmqId table, or 0 if not found. - */ - public static final long queryLastRmqId(ContentResolver resolver) { - Cursor cursor = resolver.query(Im.LastRmqId.CONTENT_URI, - PROJECTION, - null, // selection - null, // selection args - null // sort - ); - - long retVal = 0; - try { - if (cursor.moveToFirst()) { - retVal = cursor.getLong(cursor.getColumnIndexOrThrow(RMQ_ID)); - } - } finally { - cursor.close(); - } - - return retVal; - } - - /** - * saveLastRmqId - * - * saves the rmqId to the lastRmqId table. This will override the existing row if any, - * as we only keep one row of data in this table. - * - * @param resolver the content resolver. - * @param rmqId the rmq id to be saved. - */ - public static final void saveLastRmqId(ContentResolver resolver, long rmqId) { - ContentValues values = new ContentValues(); - - // always replace the first row. - values.put(_ID, 1); - values.put(RMQ_ID, rmqId); - resolver.insert(CONTENT_URI, values); - } - - /** - * The content:// style URL for this table. - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/lastRmqId"); - } - - /** - * Columns for the s2dRmqIds table, which stores the server-to-device message - * persistent ids. These are used in the RMQ2 protocol, where in the login request, the - * client selective acks these s2d ids to the server. - */ - public interface ServerToDeviceRmqIdsColumn { - String RMQ_ID = "rmq_id"; - } - - public static final class ServerToDeviceRmqIds implements BaseColumns, - ServerToDeviceRmqIdsColumn { - - /** - * The content:// style URL for this table. - */ - public static final Uri CONTENT_URI = - Uri.parse("content://com.google.android.providers.talk/s2dids"); - } - -} diff --git a/preloaded-classes b/preloaded-classes index 762bac6..c49ec6c 100644 --- a/preloaded-classes +++ b/preloaded-classes @@ -585,12 +585,6 @@ android.provider.ContactsContract$Presence android.provider.ContactsContract$RawContacts android.provider.Downloads android.provider.DrmStore$Audio -android.provider.Im$Account -android.provider.Im$Avatars -android.provider.Im$Chats -android.provider.Im$Contacts -android.provider.Im$Messages -android.provider.Im$Provider android.provider.MediaStore android.provider.MediaStore$Audio$Albums android.provider.MediaStore$Audio$Artists |