Add Telephony intent class to public API.
Jake Hamby [Fri, 13 Sep 2013 21:13:03 +0000 (14:13 -0700)]
Remove @hide from android.provider.Telephony for K release for
SMS and MMS related tables, and APN database (for MMSC info).
Helper methods are hidden except for two that use non-public APIs.

Bug: 10653081
Change-Id: I3509b122ae4e762c1c44e6b4aa8b36c8d0b62224

src/java/android/provider/Telephony.java

index e1a6d82..3ec38b2 100644 (file)
@@ -40,147 +40,164 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
- * The Telephony provider contains data related to phone operation.
- *
- * @hide
+ * The Telephony provider contains data related to phone operation, specifically SMS and MMS
+ * messages and access to the APN list, including the MMSC to use.
  */
 public final class Telephony {
     private static final String TAG = "Telephony";
 
-    // Constructor
-    public Telephony() {
+    /**
+     * Not instantiable.
+     * @hide
+     */
+    private Telephony() {
     }
 
     /**
-     * Base columns for tables that contain text based SMSs.
+     * Base columns for tables that contain text-based SMSs.
      */
     public interface TextBasedSmsColumns {
-        /**
-         * The type of the message
-         * <P>Type: INTEGER</P>
-         */
-        public static final String TYPE = "type";
 
+        /** Message type: all messages. */
         public static final int MESSAGE_TYPE_ALL    = 0;
+
+        /** Message type: inbox. */
         public static final int MESSAGE_TYPE_INBOX  = 1;
+
+        /** Message type: sent messages. */
         public static final int MESSAGE_TYPE_SENT   = 2;
+
+        /** Message type: drafts. */
         public static final int MESSAGE_TYPE_DRAFT  = 3;
+
+        /** Message type: outbox. */
         public static final int MESSAGE_TYPE_OUTBOX = 4;
-        public static final int MESSAGE_TYPE_FAILED = 5; // for failed outgoing messages
-        public static final int MESSAGE_TYPE_QUEUED = 6; // for messages to send later
+
+        /** Message type: failed outgoing message. */
+        public static final int MESSAGE_TYPE_FAILED = 5;
+
+        /** Message type: queued to send later. */
+        public static final int MESSAGE_TYPE_QUEUED = 6;
 
         /**
-         * The thread ID of the message
+         * The type of message.
          * <P>Type: INTEGER</P>
          */
-        public static final String THREAD_ID = "thread_id";
+        public static final String TYPE = "type";
 
         /**
-         * The address of the other party
-         * <P>Type: TEXT</P>
+         * The thread ID of the message.
+         * <P>Type: INTEGER</P>
          */
-        public static final String ADDRESS = "address";
+        public static final String THREAD_ID = "thread_id";
 
         /**
-         * The person ID of the sender
-         * <P>Type: INTEGER (long)</P>
+         * The address of the other party.
+         * <P>Type: TEXT</P>
          */
-        public static final String PERSON_ID = "person";
+        public static final String ADDRESS = "address";
 
         /**
-         * The date the message was received
+         * The date the message was received.
          * <P>Type: INTEGER (long)</P>
          */
         public static final String DATE = "date";
 
         /**
-         * The date the message was sent
+         * The date the message was sent.
          * <P>Type: INTEGER (long)</P>
          */
         public static final String DATE_SENT = "date_sent";
 
         /**
-         * Has the message been read
+         * Has the message been read?
          * <P>Type: INTEGER (boolean)</P>
          */
         public static final String READ = "read";
 
         /**
-         * Indicates whether this message has been seen by the user. The "seen" flag will be
-         * used to figure out whether we need to throw up a statusbar notification or not.
+         * Has the message been seen by the user? The "seen" flag determines
+         * whether we need to show a notification.
+         * <P>Type: INTEGER (boolean)</P>
          */
         public static final String SEEN = "seen";
 
         /**
-         * The TP-Status value for the message, or -1 if no status has
-         * been received
+         * {@code TP-Status} value for the message, or -1 if no status has been received.
+         * <P>Type: INTEGER</P>
          */
         public static final String STATUS = "status";
 
+        /** TP-Status: no status received. */
         public static final int STATUS_NONE = -1;
+        /** TP-Status: complete. */
         public static final int STATUS_COMPLETE = 0;
+        /** TP-Status: pending. */
         public static final int STATUS_PENDING = 32;
+        /** TP-Status: failed. */
         public static final int STATUS_FAILED = 64;
 
         /**
-         * The subject of the message, if present
+         * The subject of the message, if present.
          * <P>Type: TEXT</P>
          */
         public static final String SUBJECT = "subject";
 
         /**
-         * The body of the message
+         * The body of the message.
          * <P>Type: TEXT</P>
          */
         public static final String BODY = "body";
 
         /**
-         * The id of the sender of the conversation, if present
-         * <P>Type: INTEGER (reference to item in content://contacts/people)</P>
+         * The ID of the sender of the conversation, if present.
+         * <P>Type: INTEGER (reference to item in {@code content://contacts/people})</P>
          */
         public static final String PERSON = "person";
 
         /**
-         * The protocol identifier code
+         * The protocol identifier code.
          * <P>Type: INTEGER</P>
          */
         public static final String PROTOCOL = "protocol";
 
         /**
-         * Whether the <code>TP-Reply-Path</code> bit was set on this message
+         * Is the {@code TP-Reply-Path} flag set?
          * <P>Type: BOOLEAN</P>
          */
         public static final String REPLY_PATH_PRESENT = "reply_path_present";
 
         /**
-         * The service center (SC) through which to send the message, if present
+         * The service center (SC) through which to send the message, if present.
          * <P>Type: TEXT</P>
          */
         public static final String SERVICE_CENTER = "service_center";
 
         /**
-         * Has the message been locked?
+         * Is the message locked?
          * <P>Type: INTEGER (boolean)</P>
          */
         public static final String LOCKED = "locked";
 
         /**
-         * Error code associated with sending or receiving this message
+         * Error code associated with sending or receiving this message.
          * <P>Type: INTEGER</P>
          */
         public static final String ERROR_CODE = "error_code";
-
-        /**
-         * Meta data used externally.
-         * <P>Type: TEXT</P>
-         */
-        public static final String META_DATA = "meta_data";
     }
 
     /**
-     * Contains all text based SMS messages.
+     * Contains all text-based SMS messages.
      */
     public static final class Sms implements BaseColumns, TextBasedSmsColumns {
+
+        /**
+         * Not instantiable.
+         * @hide
+         */
+        private Sms() {
+        }
+
         /**
          * Used to determine the currently configured default SMS package.
          * @param context context of the requesting application
@@ -194,24 +211,31 @@ public final class Telephony {
             return null;
         }
 
-        public static final Cursor query(ContentResolver cr, String[] projection) {
+        /**
+         * Return cursor for table query.
+         * @hide
+         */
+        public static Cursor query(ContentResolver cr, String[] projection) {
             return cr.query(CONTENT_URI, projection, null, null, DEFAULT_SORT_ORDER);
         }
 
-        public static final Cursor query(ContentResolver cr, String[] projection,
+        /**
+         * Return cursor for table query.
+         * @hide
+         */
+        public static Cursor query(ContentResolver cr, String[] projection,
                 String where, String orderBy) {
             return cr.query(CONTENT_URI, projection, where,
-                                         null, orderBy == null ? DEFAULT_SORT_ORDER : orderBy);
+                    null, orderBy == null ? DEFAULT_SORT_ORDER : orderBy);
         }
 
         /**
-         * The content:// style URL for this table
+         * The {@code content://} style URL for this table.
          */
-        public static final Uri CONTENT_URI =
-            Uri.parse("content://sms");
+        public static final Uri CONTENT_URI = Uri.parse("content://sms");
 
         /**
-         * The default sort order for this table
+         * The default sort order for this table.
          */
         public static final String DEFAULT_SORT_ORDER = "date DESC";
 
@@ -222,11 +246,12 @@ public final class Telephony {
          * @param uri the URI to add the message to
          * @param address the address of the sender
          * @param body the body of the message
-         * @param subject the psuedo-subject of the message
+         * @param subject the pseudo-subject of the message
          * @param date the timestamp for the message
          * @param read true if the message has been read, false if not
          * @param deliveryReport true if a delivery report was requested, false if not
          * @return the URI for the new message
+         * @hide
          */
         public static Uri addMessageToUri(ContentResolver resolver,
                 Uri uri, String address, String body, String subject,
@@ -236,18 +261,19 @@ public final class Telephony {
         }
 
         /**
-         * Add an SMS to the given URI with thread_id specified.
+         * Add an SMS to the given URI with the specified thread ID.
          *
          * @param resolver the content resolver to use
          * @param uri the URI to add the message to
          * @param address the address of the sender
          * @param body the body of the message
-         * @param subject the psuedo-subject of the message
+         * @param subject the pseudo-subject of the message
          * @param date the timestamp for the message
          * @param read true if the message has been read, false if not
          * @param deliveryReport true if a delivery report was requested, false if not
          * @param threadId the thread_id of the message
          * @return the URI for the new message
+         * @hide
          */
         public static Uri addMessageToUri(ContentResolver resolver,
                 Uri uri, String address, String body, String subject,
@@ -277,6 +303,7 @@ public final class Telephony {
          * @param uri the message to move
          * @param folder the folder to move to
          * @return true if the operation succeeded
+         * @hide
          */
         public static boolean moveMessageToFolder(Context context,
                 Uri uri, int folder, int error) {
@@ -306,9 +333,9 @@ public final class Telephony {
 
             values.put(TYPE, folder);
             if (markAsUnread) {
-                values.put(READ, Integer.valueOf(0));
+                values.put(READ, 0);
             } else if (markAsRead) {
-                values.put(READ, Integer.valueOf(1));
+                values.put(READ, 1);
             }
             values.put(ERROR_CODE, error);
 
@@ -319,6 +346,7 @@ public final class Telephony {
         /**
          * Returns true iff the folder (message type) identifies an
          * outgoing message.
+         * @hide
          */
         public static boolean isOutgoingFolder(int messageType) {
             return  (messageType == MESSAGE_TYPE_FAILED)
@@ -328,17 +356,24 @@ public final class Telephony {
         }
 
         /**
-         * Contains all text based SMS messages in the SMS app's inbox.
+         * Contains all text-based SMS messages in the SMS app inbox.
          */
         public static final class Inbox implements BaseColumns, TextBasedSmsColumns {
+
             /**
-             * The content:// style URL for this table
+             * Not instantiable.
+             * @hide
              */
-            public static final Uri CONTENT_URI =
-                Uri.parse("content://sms/inbox");
+            private Inbox() {
+            }
 
             /**
-             * The default sort order for this table
+             * The {@code content://} style URL for this table.
+             */
+            public static final Uri CONTENT_URI = Uri.parse("content://sms/inbox");
+
+            /**
+             * The default sort order for this table.
              */
             public static final String DEFAULT_SORT_ORDER = "date DESC";
 
@@ -348,10 +383,11 @@ public final class Telephony {
              * @param resolver the content resolver to use
              * @param address the address of the sender
              * @param body the body of the message
-             * @param subject the psuedo-subject of the message
+             * @param subject the pseudo-subject of the message
              * @param date the timestamp for the message
              * @param read true if the message has been read, false if not
              * @return the URI for the new message
+             * @hide
              */
             public static Uri addMessage(ContentResolver resolver,
                     String address, String body, String subject, Long date,
@@ -362,17 +398,24 @@ public final class Telephony {
         }
 
         /**
-         * Contains all sent text based SMS messages in the SMS app's.
+         * Contains all sent text-based SMS messages in the SMS app.
          */
         public static final class Sent implements BaseColumns, TextBasedSmsColumns {
+
+            /**
+             * Not instantiable.
+             * @hide
+             */
+            private Sent() {
+            }
+
             /**
-             * The content:// style URL for this table
+             * The {@code content://} style URL for this table.
              */
-            public static final Uri CONTENT_URI =
-                    Uri.parse("content://sms/sent");
+            public static final Uri CONTENT_URI = Uri.parse("content://sms/sent");
 
             /**
-             * The default sort order for this table
+             * The default sort order for this table.
              */
             public static final String DEFAULT_SORT_ORDER = "date DESC";
 
@@ -382,9 +425,10 @@ public final class Telephony {
              * @param resolver the content resolver to use
              * @param address the address of the sender
              * @param body the body of the message
-             * @param subject the psuedo-subject of the message
+             * @param subject the pseudo-subject of the message
              * @param date the timestamp for the message
              * @return the URI for the new message
+             * @hide
              */
             public static Uri addMessage(ContentResolver resolver,
                     String address, String body, String subject, Long date) {
@@ -394,78 +438,61 @@ public final class Telephony {
         }
 
         /**
-         * Contains all sent text based SMS messages in the SMS app's.
+         * Contains all sent text-based SMS messages in the SMS app.
          */
         public static final class Draft implements BaseColumns, TextBasedSmsColumns {
-            /**
-             * The content:// style URL for this table
-             */
-            public static final Uri CONTENT_URI =
-                    Uri.parse("content://sms/draft");
 
             /**
-             * The default sort order for this table
+             * Not instantiable.
+             * @hide
              */
-            public static final String DEFAULT_SORT_ORDER = "date DESC";
+            private Draft() {
+            }
 
             /**
-             * Add an SMS to the Draft box.
-             *
-             * @param resolver the content resolver to use
-             * @param address the address of the sender
-             * @param body the body of the message
-             * @param subject the psuedo-subject of the message
-             * @param date the timestamp for the message
-             * @return the URI for the new message
+             * The {@code content://} style URL for this table.
              */
-            public static Uri addMessage(ContentResolver resolver,
-                    String address, String body, String subject, Long date) {
-                return addMessageToUri(resolver, CONTENT_URI, address, body,
-                        subject, date, true, false);
-            }
+            public static final Uri CONTENT_URI = Uri.parse("content://sms/draft");
 
             /**
-             * Save over an existing draft message.
-             *
-             * @param resolver the content resolver to use
-             * @param uri of existing message
-             * @param body the new body for the draft message
-             * @return true is successful, false otherwise
-             */
-            public static boolean saveMessage(ContentResolver resolver,
-                    Uri uri, String body) {
-                ContentValues values = new ContentValues(2);
-                values.put(BODY, body);
-                values.put(DATE, System.currentTimeMillis());
-                return resolver.update(uri, values, null, null) == 1;
-            }
+             * The default sort order for this table.
+             */
+            public static final String DEFAULT_SORT_ORDER = "date DESC";
         }
 
         /**
-         * Contains all pending outgoing text based SMS messages.
+         * Contains all pending outgoing text-based SMS messages.
          */
         public static final class Outbox implements BaseColumns, TextBasedSmsColumns {
+
+            /**
+             * Not instantiable.
+             * @hide
+             */
+            private Outbox() {
+            }
+
             /**
-             * The content:// style URL for this table
+             * The {@code content://} style URL for this table.
              */
-            public static final Uri CONTENT_URI =
-                Uri.parse("content://sms/outbox");
+            public static final Uri CONTENT_URI = Uri.parse("content://sms/outbox");
 
             /**
-             * The default sort order for this table
+             * The default sort order for this table.
              */
             public static final String DEFAULT_SORT_ORDER = "date DESC";
 
             /**
-             * Add an SMS to the Out box.
+             * Add an SMS to the outbox.
              *
              * @param resolver the content resolver to use
              * @param address the address of the sender
              * @param body the body of the message
-             * @param subject the psuedo-subject of the message
+             * @param subject the pseudo-subject of the message
              * @param date the timestamp for the message
              * @param deliveryReport whether a delivery report was requested for the message
              * @return the URI for the new message
+             * @hide
              */
             public static Uri addMessage(ContentResolver resolver,
                     String address, String body, String subject, Long date,
@@ -476,65 +503,80 @@ public final class Telephony {
         }
 
         /**
-         * Contains all sent text-based SMS messages in the SMS app's.
+         * Contains all sent text-based SMS messages in the SMS app.
          */
         public static final class Conversations
                 implements BaseColumns, TextBasedSmsColumns {
+
             /**
-             * The content:// style URL for this table
+             * Not instantiable.
+             * @hide
              */
-            public static final Uri CONTENT_URI =
-                Uri.parse("content://sms/conversations");
+            private Conversations() {
+            }
+
+            /**
+             * The {@code content://} style URL for this table.
+             */
+            public static final Uri CONTENT_URI = Uri.parse("content://sms/conversations");
 
             /**
-             * The default sort order for this table
+             * The default sort order for this table.
              */
             public static final String DEFAULT_SORT_ORDER = "date DESC";
 
             /**
-             * The first 45 characters of the body of the message
+             * The first 45 characters of the body of the message.
              * <P>Type: TEXT</P>
              */
             public static final String SNIPPET = "snippet";
 
             /**
-             * The number of messages in the conversation
+             * The number of messages in the conversation.
              * <P>Type: INTEGER</P>
              */
             public static final String MESSAGE_COUNT = "msg_count";
         }
 
         /**
-         * Contains info about SMS related Intents that are broadcast.
+         * Contains constants for SMS related Intents that are broadcast.
          */
         public static final class Intents {
+
             /**
-             * Set by BroadcastReceiver. Indicates the message was handled
+             * Not instantiable.
+             * @hide
+             */
+            private Intents() {
+            }
+
+            /**
+             * Set by BroadcastReceiver to indicate that the message was handled
              * successfully.
              */
             public static final int RESULT_SMS_HANDLED = 1;
 
             /**
-             * Set by BroadcastReceiver. Indicates a generic error while
+             * Set by BroadcastReceiver to indicate a generic error while
              * processing the message.
              */
             public static final int RESULT_SMS_GENERIC_ERROR = 2;
 
             /**
-             * Set by BroadcastReceiver. Indicates insufficient memory to store
+             * Set by BroadcastReceiver to indicate insufficient memory to store
              * the message.
              */
             public static final int RESULT_SMS_OUT_OF_MEMORY = 3;
 
             /**
-             * Set by BroadcastReceiver. Indicates the message, while
+             * Set by BroadcastReceiver to indicate that the message, while
              * possibly valid, is of a format or encoding that is not
              * supported.
              */
             public static final int RESULT_SMS_UNSUPPORTED = 4;
 
             /**
-             * Set by BroadcastReceiver. Indicates the duplicated incoming message.
+             * Set by BroadcastReceiver to indicate a duplicate incoming message.
              */
             public static final int RESULT_SMS_DUPLICATED = 5;
 
@@ -558,7 +600,7 @@ public final class Telephony {
             public static final String EXTRA_PACKAGE_NAME = "package";
 
             /**
-             * Broadcast Action: A new text based SMS message has been received
+             * Broadcast Action: A new text-based SMS message has been received
              * by the device. This intent will only be delivered to the default
              * sms app. That app is responsible for writing the message and notifying
              * the user. The intent will have the following extra values:</p>
@@ -579,7 +621,7 @@ public final class Telephony {
                     "android.provider.Telephony.SMS_DELIVER";
 
             /**
-             * Broadcast Action: A new text based SMS message has been received
+             * Broadcast Action: A new text-based SMS message has been received
              * by the device. This intent will be delivered to all registered
              * receivers as a notification. These apps are not expected to write the
              * message or notify the user. The intent will have the following extra
@@ -758,11 +800,9 @@ public final class Telephony {
              * following extra value:</p>
              *
              * <ul>
-             *   <li><em>result</em> - An int result code, eg,
-             *   <code>{@link #RESULT_SMS_OUT_OF_MEMORY}</code>,
+             *   <li><em>result</em> - An int result code, e.g. {@link #RESULT_SMS_OUT_OF_MEMORY}
              *   indicating the error returned to the network.</li>
              * </ul>
-
              */
             @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
             public static final String SMS_REJECTED_ACTION =
@@ -775,21 +815,16 @@ public final class Telephony {
              * @param intent the intent to read from
              * @return an array of SmsMessages for the PDUs
              */
-            public static SmsMessage[] getMessagesFromIntent(
-                    Intent intent) {
+            public static SmsMessage[] getMessagesFromIntent(Intent intent) {
                 Object[] messages = (Object[]) intent.getSerializableExtra("pdus");
                 String format = intent.getStringExtra("format");
-                byte[][] pduObjs = new byte[messages.length][];
 
-                for (int i = 0; i < messages.length; i++) {
-                    pduObjs[i] = (byte[]) messages[i];
-                }
-                byte[][] pdus = new byte[pduObjs.length][];
-                int pduCount = pdus.length;
+                int pduCount = messages.length;
                 SmsMessage[] msgs = new SmsMessage[pduCount];
+
                 for (int i = 0; i < pduCount; i++) {
-                    pdus[i] = pduObjs[i];
-                    msgs[i] = SmsMessage.createFromPdu(pdus[i], format);
+                    byte[] pdu = (byte[]) messages[i];
+                    msgs[i] = SmsMessage.createFromPdu(pdu, format);
                 }
                 return msgs;
             }
@@ -801,13 +836,24 @@ public final class Telephony {
      */
     public interface BaseMmsColumns extends BaseColumns {
 
+        /** Message box: all messages. */
         public static final int MESSAGE_BOX_ALL    = 0;
+        /** Message box: inbox. */
         public static final int MESSAGE_BOX_INBOX  = 1;
+        /** Message box: sent messages. */
         public static final int MESSAGE_BOX_SENT   = 2;
+        /** Message box: drafts. */
         public static final int MESSAGE_BOX_DRAFTS = 3;
+        /** Message box: outbox. */
         public static final int MESSAGE_BOX_OUTBOX = 4;
 
         /**
+         * The thread ID of the message.
+         * <P>Type: INTEGER (long)</P>
+         */
+        public static final String THREAD_ID = "thread_id";
+
+        /**
          * The date the message was received.
          * <P>Type: INTEGER (long)</P>
          */
@@ -820,31 +866,33 @@ public final class Telephony {
         public static final String DATE_SENT = "date_sent";
 
         /**
-         * The box which the message belong to, for example, MESSAGE_BOX_INBOX.
+         * The box which the message belongs to, e.g. {@link #MESSAGE_BOX_INBOX}.
          * <P>Type: INTEGER</P>
          */
         public static final String MESSAGE_BOX = "msg_box";
 
         /**
-         * Has the message been read.
+         * Has the message been read?
          * <P>Type: INTEGER (boolean)</P>
          */
         public static final String READ = "read";
 
         /**
-         * Indicates whether this message has been seen by the user. The "seen" flag will be
-         * used to figure out whether we need to throw up a statusbar notification or not.
+         * Has the message been seen by the user? The "seen" flag determines
+         * whether we need to show a new message notification.
+         * <P>Type: INTEGER (boolean)</P>
          */
         public static final String SEEN = "seen";
 
         /**
-         * Indicates whether this message has only a text part (can also have a subject) and
-         * no picture, slideshow, or sound, etc., parts. The value is a boolean, 1 or 0.
+         * Does the message have only a text part (can also have a subject) with
+         * no picture, slideshow, sound, etc. parts?
+         * <P>Type: INTEGER (boolean)</P>
          */
         public static final String TEXT_ONLY = "text_only";
 
         /**
-         * The Message-ID of the message.
+         * The {@code Message-ID} of the message.
          * <P>Type: TEXT</P>
          */
         public static final String MESSAGE_ID = "m_id";
@@ -862,44 +910,20 @@ public final class Telephony {
         public static final String SUBJECT_CHARSET = "sub_cs";
 
         /**
-         * The Content-Type of the message.
+         * The {@code Content-Type} of the message.
          * <P>Type: TEXT</P>
          */
         public static final String CONTENT_TYPE = "ct_t";
 
         /**
-         * The Content-Location of the message.
+         * The {@code Content-Location} of the message.
          * <P>Type: TEXT</P>
          */
         public static final String CONTENT_LOCATION = "ct_l";
 
         /**
-         * The address of the sender.
-         * <P>Type: TEXT</P>
-         */
-        public static final String FROM = "from";
-
-        /**
-         * The address of the recipients.
-         * <P>Type: TEXT</P>
-         */
-        public static final String TO = "to";
-
-        /**
-         * The address of the cc. recipients.
-         * <P>Type: TEXT</P>
-         */
-        public static final String CC = "cc";
-
-        /**
-         * The address of the bcc. recipients.
-         * <P>Type: TEXT</P>
-         */
-        public static final String BCC = "bcc";
-
-        /**
          * The expiry time of the message.
-         * <P>Type: INTEGER</P>
+         * <P>Type: INTEGER (long)</P>
          */
         public static final String EXPIRY = "exp";
 
@@ -916,7 +940,7 @@ public final class Telephony {
         public static final String MESSAGE_TYPE = "m_type";
 
         /**
-         * The version of specification that this message conform.
+         * The version of the specification that this message conforms to.
          * <P>Type: INTEGER</P>
          */
         public static final String MMS_VERSION = "v";
@@ -929,338 +953,439 @@ public final class Telephony {
 
         /**
          * The priority of the message.
-         * <P>Type: TEXT</P>
+         * <P>Type: INTEGER</P>
          */
         public static final String PRIORITY = "pri";
 
         /**
-         * The read-report of the message.
-         * <P>Type: TEXT</P>
+         * The {@code read-report} of the message.
+         * <P>Type: INTEGER (boolean)</P>
          */
         public static final String READ_REPORT = "rr";
 
         /**
-         * Whether the report is allowed.
-         * <P>Type: TEXT</P>
+         * Is read report allowed?
+         * <P>Type: INTEGER (boolean)</P>
          */
         public static final String REPORT_ALLOWED = "rpt_a";
 
         /**
-         * The response-status of the message.
+         * The {@code response-status} of the message.
          * <P>Type: INTEGER</P>
          */
         public static final String RESPONSE_STATUS = "resp_st";
 
         /**
-         * The status of the message.
+         * The {@code status} of the message.
          * <P>Type: INTEGER</P>
          */
         public static final String STATUS = "st";
 
         /**
-         * The transaction-id of the message.
+         * The {@code transaction-id} of the message.
          * <P>Type: TEXT</P>
          */
         public static final String TRANSACTION_ID = "tr_id";
 
         /**
-         * The retrieve-status of the message.
+         * The {@code retrieve-status} of the message.
          * <P>Type: INTEGER</P>
          */
         public static final String RETRIEVE_STATUS = "retr_st";
 
         /**
-         * The retrieve-text of the message.
+         * The {@code retrieve-text} of the message.
          * <P>Type: TEXT</P>
          */
         public static final String RETRIEVE_TEXT = "retr_txt";
 
         /**
          * The character set of the retrieve-text.
-         * <P>Type: TEXT</P>
+         * <P>Type: INTEGER</P>
          */
         public static final String RETRIEVE_TEXT_CHARSET = "retr_txt_cs";
 
         /**
-         * The read-status of the message.
+         * The {@code read-status} of the message.
          * <P>Type: INTEGER</P>
          */
         public static final String READ_STATUS = "read_status";
 
         /**
-         * The content-class of the message.
+         * The {@code content-class} of the message.
          * <P>Type: INTEGER</P>
          */
         public static final String CONTENT_CLASS = "ct_cls";
 
         /**
-         * The delivery-report of the message.
+         * The {@code delivery-report} of the message.
          * <P>Type: INTEGER</P>
          */
         public static final String DELIVERY_REPORT = "d_rpt";
 
         /**
-         * The delivery-time-token of the message.
+         * The {@code delivery-time-token} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String DELIVERY_TIME_TOKEN = "d_tm_tok";
 
         /**
-         * The delivery-time of the message.
+         * The {@code delivery-time} of the message.
          * <P>Type: INTEGER</P>
          */
         public static final String DELIVERY_TIME = "d_tm";
 
         /**
-         * The response-text of the message.
+         * The {@code response-text} of the message.
          * <P>Type: TEXT</P>
          */
         public static final String RESPONSE_TEXT = "resp_txt";
 
         /**
-         * The sender-visibility of the message.
+         * The {@code sender-visibility} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String SENDER_VISIBILITY = "s_vis";
 
         /**
-         * The reply-charging of the message.
+         * The {@code reply-charging} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String REPLY_CHARGING = "r_chg";
 
         /**
-         * The reply-charging-deadline-token of the message.
+         * The {@code reply-charging-deadline-token} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String REPLY_CHARGING_DEADLINE_TOKEN = "r_chg_dl_tok";
 
         /**
-         * The reply-charging-deadline of the message.
+         * The {@code reply-charging-deadline} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String REPLY_CHARGING_DEADLINE = "r_chg_dl";
 
         /**
-         * The reply-charging-id of the message.
+         * The {@code reply-charging-id} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String REPLY_CHARGING_ID = "r_chg_id";
 
         /**
-         * The reply-charging-size of the message.
+         * The {@code reply-charging-size} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String REPLY_CHARGING_SIZE = "r_chg_sz";
 
         /**
-         * The previously-sent-by of the message.
+         * The {@code previously-sent-by} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String PREVIOUSLY_SENT_BY = "p_s_by";
 
         /**
-         * The previously-sent-date of the message.
+         * The {@code previously-sent-date} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String PREVIOUSLY_SENT_DATE = "p_s_d";
 
         /**
-         * The store of the message.
+         * The {@code store} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String STORE = "store";
 
         /**
-         * The mm-state of the message.
+         * The {@code mm-state} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String MM_STATE = "mm_st";
 
         /**
-         * The mm-flags-token of the message.
+         * The {@code mm-flags-token} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String MM_FLAGS_TOKEN = "mm_flg_tok";
 
         /**
-         * The mm-flags of the message.
+         * The {@code mm-flags} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String MM_FLAGS = "mm_flg";
 
         /**
-         * The store-status of the message.
+         * The {@code store-status} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String STORE_STATUS = "store_st";
 
         /**
-         * The store-status-text of the message.
+         * The {@code store-status-text} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String STORE_STATUS_TEXT = "store_st_txt";
 
         /**
-         * The stored of the message.
+         * The {@code stored} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String STORED = "stored";
 
         /**
-         * The totals of the message.
+         * The {@code totals} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String TOTALS = "totals";
 
         /**
-         * The mbox-totals of the message.
+         * The {@code mbox-totals} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String MBOX_TOTALS = "mb_t";
 
         /**
-         * The mbox-totals-token of the message.
+         * The {@code mbox-totals-token} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String MBOX_TOTALS_TOKEN = "mb_t_tok";
 
         /**
-         * The quotas of the message.
+         * The {@code quotas} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String QUOTAS = "qt";
 
         /**
-         * The mbox-quotas of the message.
+         * The {@code mbox-quotas} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String MBOX_QUOTAS = "mb_qt";
 
         /**
-         * The mbox-quotas-token of the message.
+         * The {@code mbox-quotas-token} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String MBOX_QUOTAS_TOKEN = "mb_qt_tok";
 
         /**
-         * The message-count of the message.
+         * The {@code message-count} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String MESSAGE_COUNT = "m_cnt";
 
         /**
-         * The start of the message.
+         * The {@code start} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String START = "start";
 
         /**
-         * The distribution-indicator of the message.
+         * The {@code distribution-indicator} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String DISTRIBUTION_INDICATOR = "d_ind";
 
         /**
-         * The element-descriptor of the message.
+         * The {@code element-descriptor} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String ELEMENT_DESCRIPTOR = "e_des";
 
         /**
-         * The limit of the message.
+         * The {@code limit} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String LIMIT = "limit";
 
         /**
-         * The recommended-retrieval-mode of the message.
+         * The {@code recommended-retrieval-mode} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String RECOMMENDED_RETRIEVAL_MODE = "r_r_mod";
 
         /**
-         * The recommended-retrieval-mode-text of the message.
+         * The {@code recommended-retrieval-mode-text} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String RECOMMENDED_RETRIEVAL_MODE_TEXT = "r_r_mod_txt";
 
         /**
-         * The status-text of the message.
+         * The {@code status-text} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String STATUS_TEXT = "st_txt";
 
         /**
-         * The applic-id of the message.
+         * The {@code applic-id} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String APPLIC_ID = "apl_id";
 
         /**
-         * The reply-applic-id of the message.
+         * The {@code reply-applic-id} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String REPLY_APPLIC_ID = "r_apl_id";
 
         /**
-         * The aux-applic-id of the message.
+         * The {@code aux-applic-id} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String AUX_APPLIC_ID = "aux_apl_id";
 
         /**
-         * The drm-content of the message.
+         * The {@code drm-content} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String DRM_CONTENT = "drm_c";
 
         /**
-         * The adaptation-allowed of the message.
+         * The {@code adaptation-allowed} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String ADAPTATION_ALLOWED = "adp_a";
 
         /**
-         * The replace-id of the message.
+         * The {@code replace-id} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String REPLACE_ID = "repl_id";
 
         /**
-         * The cancel-id of the message.
+         * The {@code cancel-id} of the message.
          * <P>Type: TEXT</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String CANCEL_ID = "cl_id";
 
         /**
-         * The cancel-status of the message.
+         * The {@code cancel-status} of the message.
          * <P>Type: INTEGER</P>
+         * @deprecated this column is no longer supported.
+         * @hide
          */
+        @Deprecated
         public static final String CANCEL_STATUS = "cl_st";
 
         /**
-         * The thread ID of the message
-         * <P>Type: INTEGER</P>
-         */
-        public static final String THREAD_ID = "thread_id";
-
-        /**
-         * Has the message been locked?
+         * Is the message locked?
          * <P>Type: INTEGER (boolean)</P>
          */
         public static final String LOCKED = "locked";
-
-        /**
-         * Meta data used externally.
-         * <P>Type: TEXT</P>
-         */
-        public static final String META_DATA = "meta_data";
     }
 
     /**
-     * Columns for the "canonical_addresses" table used by MMS and
-     * SMS."
+     * Columns for the "canonical_addresses" table used by MMS and SMS.
      */
     public interface CanonicalAddressesColumns extends BaseColumns {
         /**
@@ -1277,9 +1402,9 @@ public final class Telephony {
      * Columns for the "threads" table used by MMS and SMS.
      */
     public interface ThreadsColumns extends BaseColumns {
+
         /**
          * The date at which the thread was created.
-         *
          * <P>Type: INTEGER (long)</P>
          */
         public static final String DATE = "date";
@@ -1296,6 +1421,7 @@ public final class Telephony {
          * <P>Type: INTEGER</P>
          */
         public static final String MESSAGE_COUNT = "message_count";
+
         /**
          * Indicates whether all messages of the thread have been read.
          * <P>Type: INTEGER</P>
@@ -1307,22 +1433,26 @@ public final class Telephony {
          * <P>Type: TEXT</P>
          */
         public static final String SNIPPET = "snippet";
+
         /**
          * The charset of the snippet.
          * <P>Type: INTEGER</P>
          */
         public static final String SNIPPET_CHARSET = "snippet_cs";
+
         /**
-         * Type of the thread, either Threads.COMMON_THREAD or
-         * Threads.BROADCAST_THREAD.
+         * Type of the thread, either {@link Threads#COMMON_THREAD} or
+         * {@link Threads#BROADCAST_THREAD}.
          * <P>Type: INTEGER</P>
          */
         public static final String TYPE = "type";
+
         /**
          * Indicates whether there is a transmission error in the thread.
          * <P>Type: INTEGER</P>
          */
         public static final String ERROR = "error";
+
         /**
          * Indicates whether this thread contains any attachments.
          * <P>Type: INTEGER</P>
@@ -1334,25 +1464,47 @@ public final class Telephony {
      * Helper functions for the "threads" table used by MMS and SMS.
      */
     public static final class Threads implements ThreadsColumns {
+
         private static final String[] ID_PROJECTION = { BaseColumns._ID };
+
+        /**
+         * Private {@code content://} style URL for this table. Used by
+         * {@link #getOrCreateThreadId(android.content.Context, java.util.Set)}.
+         */
         private static final Uri THREAD_ID_CONTENT_URI = Uri.parse(
                 "content://mms-sms/threadID");
+
+        /**
+         * The {@code content://} style URL for this table, by conversation.
+         */
         public static final Uri CONTENT_URI = Uri.withAppendedPath(
                 MmsSms.CONTENT_URI, "conversations");
+
+        /**
+         * The {@code content://} style URL for this table, for obsolete threads.
+         */
         public static final Uri OBSOLETE_THREADS_URI = Uri.withAppendedPath(
                 CONTENT_URI, "obsolete");
 
+        /** Thread type: common thread. */
         public static final int COMMON_THREAD    = 0;
+
+        /** Thread type: broadcast thread. */
         public static final int BROADCAST_THREAD = 1;
 
-        // No one should construct an instance of this class.
+        /**
+         * Not instantiable.
+         * @hide
+         */
         private Threads() {
         }
 
         /**
-         * This is a single-recipient version of
-         * getOrCreateThreadId.  It's convenient for use with SMS
-         * messages.
+         * This is a single-recipient version of {@code getOrCreateThreadId}.
+         * It's convenient for use with SMS messages.
+         * @param context the context object to use.
+         * @param recipient the recipient to send to.
+         * @hide
          */
         public static long getOrCreateThreadId(Context context, String recipient) {
             Set<String> recipients = new HashSet<String>();
@@ -1367,9 +1519,10 @@ public final class Telephony {
          * allocate a new thread ID.  Otherwise, use the appropriate
          * existing thread ID.
          *
-         * Find the thread ID of the same set of recipients (in
-         * any order, without any additions). If one
-         * is found, return it.  Otherwise, return a unique thread ID.
+         * <p>Find the thread ID of the same set of recipients (in any order,
+         * without any additions). If one is found, return it. Otherwise,
+         * return a unique thread ID.</p>
+         * @hide
          */
         public static long getOrCreateThreadId(
                 Context context, Set<String> recipients) {
@@ -1409,67 +1562,72 @@ public final class Telephony {
      * Contains all MMS messages.
      */
     public static final class Mms implements BaseMmsColumns {
+
         /**
-         * The content:// style URL for this table
+         * Not instantiable.
+         * @hide
+         */
+        private Mms() {
+        }
+
+        /**
+         * The {@code content://} URI for this table.
          */
         public static final Uri CONTENT_URI = Uri.parse("content://mms");
 
+        /**
+         * Content URI for getting MMS report requests.
+         */
         public static final Uri REPORT_REQUEST_URI = Uri.withAppendedPath(
                                             CONTENT_URI, "report-request");
 
+        /**
+         * Content URI for getting MMS report status.
+         */
         public static final Uri REPORT_STATUS_URI = Uri.withAppendedPath(
                                             CONTENT_URI, "report-status");
 
         /**
-         * The default sort order for this table
+         * The default sort order for this table.
          */
         public static final String DEFAULT_SORT_ORDER = "date DESC";
 
         /**
-         * mailbox         =       name-addr
-         * name-addr       =       [display-name] angle-addr
-         * angle-addr      =       [CFWS] "<" addr-spec ">" [CFWS]
+         * Regex pattern for names and email addresses.
+         * <ul>
+         *     <li><em>mailbox</em> = {@code name-addr}</li>
+         *     <li><em>name-addr</em> = {@code [display-name] angle-addr}</li>
+         *     <li><em>angle-addr</em> = {@code [CFWS] "<" addr-spec ">" [CFWS]}</li>
+         * </ul>
+         * @hide
          */
         public static final Pattern NAME_ADDR_EMAIL_PATTERN =
                 Pattern.compile("\\s*(\"[^\"]*\"|[^<>\"]+)\\s*<([^<>]+)>\\s*");
 
         /**
-         * quoted-string   =       [CFWS]
-         *                         DQUOTE *([FWS] qcontent) [FWS] DQUOTE
-         *                         [CFWS]
+         * Helper method to query this table.
+         * @hide
          */
-        public static final Pattern QUOTED_STRING_PATTERN =
-                Pattern.compile("\\s*\"([^\"]*)\"\\s*");
-
-        public static final Cursor query(
+        public static Cursor query(
                 ContentResolver cr, String[] projection) {
             return cr.query(CONTENT_URI, projection, null, null, DEFAULT_SORT_ORDER);
         }
 
-        public static final Cursor query(
+        /**
+         * Helper method to query this table.
+         * @hide
+         */
+        public static Cursor query(
                 ContentResolver cr, String[] projection,
                 String where, String orderBy) {
             return cr.query(CONTENT_URI, projection,
                     where, null, orderBy == null ? DEFAULT_SORT_ORDER : orderBy);
         }
 
-        public static final String getMessageBoxName(int msgBox) {
-            switch (msgBox) {
-                case MESSAGE_BOX_ALL:
-                    return "all";
-                case MESSAGE_BOX_INBOX:
-                    return "inbox";
-                case MESSAGE_BOX_SENT:
-                    return "sent";
-                case MESSAGE_BOX_DRAFTS:
-                    return "drafts";
-                case MESSAGE_BOX_OUTBOX:
-                    return "outbox";
-                default:
-                    throw new IllegalArgumentException("Invalid message box: " + msgBox);
-            }
-        }
-
+        /**
+         * Helper method to extract email address from address string.
+         * @hide
+         */
         public static String extractAddrSpec(String address) {
             Matcher match = NAME_ADDR_EMAIL_PATTERN.matcher(address);
 
@@ -1480,10 +1638,11 @@ public final class Telephony {
         }
 
         /**
-         * Returns true if the address is an email address
+         * Is the specified address an email address?
          *
-         * @param address the input address to be tested
-         * @return true if address is an email address
+         * @param address the input address to test
+         * @return true if address is an email address; false otherwise.
+         * @hide
          */
         public static boolean isEmailAddress(String address) {
             if (TextUtils.isEmpty(address)) {
@@ -1496,10 +1655,11 @@ public final class Telephony {
         }
 
         /**
-         * Returns true if the number is a Phone number
+         * Is the specified number a phone number?
          *
-         * @param number the input number to be tested
-         * @return true if number is a Phone number
+         * @param number the input number to test
+         * @return true if number is a phone number; false otherwise.
+         * @hide
          */
         public static boolean isPhoneNumber(String number) {
             if (TextUtils.isEmpty(number)) {
@@ -1511,98 +1671,157 @@ public final class Telephony {
         }
 
         /**
-         * Contains all MMS messages in the MMS app's inbox.
+         * Contains all MMS messages in the MMS app inbox.
          */
         public static final class Inbox implements BaseMmsColumns {
+
+            /**
+             * Not instantiable.
+             * @hide
+             */
+            private Inbox() {
+            }
+
             /**
-             * The content:// style URL for this table
+             * The {@code content://} style URL for this table.
              */
             public static final Uri
                     CONTENT_URI = Uri.parse("content://mms/inbox");
 
             /**
-             * The default sort order for this table
+             * The default sort order for this table.
              */
             public static final String DEFAULT_SORT_ORDER = "date DESC";
         }
 
         /**
-         * Contains all MMS messages in the MMS app's sent box.
+         * Contains all MMS messages in the MMS app sent folder.
          */
         public static final class Sent implements BaseMmsColumns {
+
             /**
-             * The content:// style URL for this table
+             * Not instantiable.
+             * @hide
+             */
+            private Sent() {
+            }
+
+            /**
+             * The {@code content://} style URL for this table.
              */
             public static final Uri
                     CONTENT_URI = Uri.parse("content://mms/sent");
 
             /**
-             * The default sort order for this table
+             * The default sort order for this table.
              */
             public static final String DEFAULT_SORT_ORDER = "date DESC";
         }
 
         /**
-         * Contains all MMS messages in the MMS app's drafts box.
+         * Contains all MMS messages in the MMS app drafts folder.
          */
         public static final class Draft implements BaseMmsColumns {
+
             /**
-             * The content:// style URL for this table
+             * Not instantiable.
+             * @hide
+             */
+            private Draft() {
+            }
+
+            /**
+             * The {@code content://} style URL for this table.
              */
             public static final Uri
                     CONTENT_URI = Uri.parse("content://mms/drafts");
 
             /**
-             * The default sort order for this table
+             * The default sort order for this table.
              */
             public static final String DEFAULT_SORT_ORDER = "date DESC";
         }
 
         /**
-         * Contains all MMS messages in the MMS app's outbox.
+         * Contains all MMS messages in the MMS app outbox.
          */
         public static final class Outbox implements BaseMmsColumns {
+
             /**
-             * The content:// style URL for this table
+             * Not instantiable.
+             * @hide
+             */
+            private Outbox() {
+            }
+
+            /**
+             * The {@code content://} style URL for this table.
              */
             public static final Uri
                     CONTENT_URI = Uri.parse("content://mms/outbox");
 
             /**
-             * The default sort order for this table
+             * The default sort order for this table.
              */
             public static final String DEFAULT_SORT_ORDER = "date DESC";
         }
 
+        /**
+         * Contains address information for an MMS message.
+         */
         public static final class Addr implements BaseColumns {
+
+            /**
+             * Not instantiable.
+             * @hide
+             */
+            private Addr() {
+            }
+
             /**
              * The ID of MM which this address entry belongs to.
+             * <P>Type: INTEGER (long)</P>
              */
             public static final String MSG_ID = "msg_id";
 
             /**
              * The ID of contact entry in Phone Book.
+             * <P>Type: INTEGER (long)</P>
              */
             public static final String CONTACT_ID = "contact_id";
 
             /**
              * The address text.
+             * <P>Type: TEXT</P>
              */
             public static final String ADDRESS = "address";
 
             /**
-             * Type of address, must be one of PduHeaders.BCC,
-             * PduHeaders.CC, PduHeaders.FROM, PduHeaders.TO.
+             * Type of address: must be one of {@code PduHeaders.BCC},
+             * {@code PduHeaders.CC}, {@code PduHeaders.FROM}, {@code PduHeaders.TO}.
+             * <P>Type: INTEGER</P>
              */
             public static final String TYPE = "type";
 
             /**
-             * Character set of this entry.
+             * Character set of this entry (MMS charset value).
+             * <P>Type: INTEGER</P>
              */
             public static final String CHARSET = "charset";
         }
 
+        /**
+         * Contains message parts.
+         */
         public static final class Part implements BaseColumns {
+
+            /**
+             * Not instantiable.
+             * @hide
+             */
+            private Part() {
+            }
+
             /**
              * The identifier of the message which this part belongs to.
              * <P>Type: INTEGER</P>
@@ -1670,59 +1889,64 @@ public final class Telephony {
             public static final String CT_TYPE = "ctt_t";
 
             /**
-             * The location(on filesystem) of the binary data of the part.
+             * The location (on filesystem) of the binary data of the part.
              * <P>Type: INTEGER</P>
              */
             public static final String _DATA = "_data";
 
+            /**
+             * The message text.
+             * <P>Type: TEXT</P>
+             */
             public static final String TEXT = "text";
-
         }
 
+        /**
+         * Message send rate table.
+         */
         public static final class Rate {
+
+            /**
+             * Not instantiable.
+             * @hide
+             */
+            private Rate() {
+            }
+
+            /**
+             * The {@code content://} style URL for this table.
+             */
             public static final Uri CONTENT_URI = Uri.withAppendedPath(
                     Mms.CONTENT_URI, "rate");
+
             /**
              * When a message was successfully sent.
-             * <P>Type: INTEGER</P>
+             * <P>Type: INTEGER (long)</P>
              */
             public static final String SENT_TIME = "sent_time";
         }
 
+        /**
+         * Intents class.
+         */
         public static final class Intents {
-            private Intents() {
-                // Non-instantiatable.
-            }
 
             /**
-             * The extra field to store the contents of the Intent,
-             * which should be an array of Uri.
-             */
-            public static final String EXTRA_CONTENTS = "contents";
-            /**
-             * The extra field to store the type of the contents,
-             * which should be an array of String.
+             * Not instantiable.
+             * @hide
              */
-            public static final String EXTRA_TYPES    = "types";
-            /**
-             * The extra field to store the 'Cc' addresses.
-             */
-            public static final String EXTRA_CC       = "cc";
-            /**
-             * The extra field to store the 'Bcc' addresses;
-             */
-            public static final String EXTRA_BCC      = "bcc";
-            /**
-             * The extra field to store the 'Subject'.
-             */
-            public static final String EXTRA_SUBJECT  = "subject";
+            private Intents() {
+            }
+
             /**
              * Indicates that the contents of specified URIs were changed.
              * The application which is showing or caching these contents
              * should be updated.
              */
-            public static final String
-            CONTENT_CHANGED_ACTION = "android.intent.action.CONTENT_CHANGED";
+            @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+            public static final String CONTENT_CHANGED_ACTION
+                    = "android.intent.action.CONTENT_CHANGED";
+
             /**
              * An extra field which stores the URI of deleted contents.
              */
@@ -1734,213 +1958,383 @@ public final class Telephony {
      * Contains all MMS and SMS messages.
      */
     public static final class MmsSms implements BaseColumns {
+
+        /**
+         * Not instantiable.
+         * @hide
+         */
+        private MmsSms() {
+        }
+
         /**
-         * The column to distinguish SMS &amp; MMS messages in query results.
+         * The column to distinguish SMS and MMS messages in query results.
          */
         public static final String TYPE_DISCRIMINATOR_COLUMN =
                 "transport_type";
 
+        /**
+         * The {@code content://} style URL for this table.
+         */
         public static final Uri CONTENT_URI = Uri.parse("content://mms-sms/");
 
+        /**
+         * The {@code content://} style URL for this table, by conversation.
+         */
         public static final Uri CONTENT_CONVERSATIONS_URI = Uri.parse(
                 "content://mms-sms/conversations");
 
+        /**
+         * The {@code content://} style URL for this table, by phone number.
+         */
         public static final Uri CONTENT_FILTER_BYPHONE_URI = Uri.parse(
                 "content://mms-sms/messages/byphone");
 
+        /**
+         * The {@code content://} style URL for undelivered messages in this table.
+         */
         public static final Uri CONTENT_UNDELIVERED_URI = Uri.parse(
                 "content://mms-sms/undelivered");
 
+        /**
+         * The {@code content://} style URL for draft messages in this table.
+         */
         public static final Uri CONTENT_DRAFT_URI = Uri.parse(
                 "content://mms-sms/draft");
 
+        /**
+         * The {@code content://} style URL for locked messages in this table.
+         */
         public static final Uri CONTENT_LOCKED_URI = Uri.parse(
                 "content://mms-sms/locked");
 
-        /***
-         * Pass in a query parameter called "pattern" which is the text
-         * to search for.
-         * The sort order is fixed to be thread_id ASC,date DESC.
+        /**
+         * Pass in a query parameter called "pattern" which is the text to search for.
+         * The sort order is fixed to be: {@code thread_id ASC, date DESC}.
          */
         public static final Uri SEARCH_URI = Uri.parse(
                 "content://mms-sms/search");
 
         // Constants for message protocol types.
+
+        /** SMS protocol type. */
         public static final int SMS_PROTO = 0;
+
+        /** MMS protocol type. */
         public static final int MMS_PROTO = 1;
 
         // Constants for error types of pending messages.
+
+        /** Error type: no error. */
         public static final int NO_ERROR                      = 0;
+
+        /** Error type: generic transient error. */
         public static final int ERR_TYPE_GENERIC              = 1;
+
+        /** Error type: SMS protocol transient error. */
         public static final int ERR_TYPE_SMS_PROTO_TRANSIENT  = 2;
+
+        /** Error type: MMS protocol transient error. */
         public static final int ERR_TYPE_MMS_PROTO_TRANSIENT  = 3;
+
+        /** Error type: transport failure. */
         public static final int ERR_TYPE_TRANSPORT_FAILURE    = 4;
+
+        /** Error type: permanent error (along with all higher error values). */
         public static final int ERR_TYPE_GENERIC_PERMANENT    = 10;
+
+        /** Error type: SMS protocol permanent error. */
         public static final int ERR_TYPE_SMS_PROTO_PERMANENT  = 11;
+
+        /** Error type: MMS protocol permanent error. */
         public static final int ERR_TYPE_MMS_PROTO_PERMANENT  = 12;
 
+        /**
+         * Contains pending messages info.
+         */
         public static final class PendingMessages implements BaseColumns {
+
+            /**
+             * Not instantiable.
+             * @hide
+             */
+            private PendingMessages() {
+            }
+
             public static final Uri CONTENT_URI = Uri.withAppendedPath(
                     MmsSms.CONTENT_URI, "pending");
+
             /**
-             * The type of transport protocol(MMS or SMS).
+             * The type of transport protocol (MMS or SMS).
              * <P>Type: INTEGER</P>
              */
             public static final String PROTO_TYPE = "proto_type";
+
             /**
              * The ID of the message to be sent or downloaded.
-             * <P>Type: INTEGER</P>
+             * <P>Type: INTEGER (long)</P>
              */
             public static final String MSG_ID = "msg_id";
+
             /**
              * The type of the message to be sent or downloaded.
-             * This field is only valid for MM. For SM, its value is always
-             * set to 0.
+             * This field is only valid for MM. For SM, its value is always set to 0.
+             * <P>Type: INTEGER</P>
              */
             public static final String MSG_TYPE = "msg_type";
+
             /**
              * The type of the error code.
              * <P>Type: INTEGER</P>
              */
             public static final String ERROR_TYPE = "err_type";
+
             /**
              * The error code of sending/retrieving process.
-             * <P>Type:  INTEGER</P>
+             * <P>Type: INTEGER</P>
              */
             public static final String ERROR_CODE = "err_code";
+
             /**
              * How many times we tried to send or download the message.
-             * <P>Type:  INTEGER</P>
+             * <P>Type: INTEGER</P>
              */
             public static final String RETRY_INDEX = "retry_index";
+
             /**
              * The time to do next retry.
+             * <P>Type: INTEGER (long)</P>
              */
             public static final String DUE_TIME = "due_time";
+
             /**
              * The time we last tried to send or download the message.
+             * <P>Type: INTEGER (long)</P>
              */
             public static final String LAST_TRY = "last_try";
         }
 
+        /**
+         * Words table used by provider for full-text searches.
+         * @hide
+         */
         public static final class WordsTable {
+
+            /**
+             * Not instantiable.
+             * @hide
+             */
+            private WordsTable() {}
+
+            /**
+             * Primary key.
+             * <P>Type: INTEGER (long)</P>
+             */
             public static final String ID = "_id";
+
+            /**
+             * Source row ID.
+             * <P>Type: INTEGER (long)</P>
+             */
             public static final String SOURCE_ROW_ID = "source_id";
+
+            /**
+             * Table ID (either 1 or 2).
+             * <P>Type: INTEGER</P>
+             */
             public static final String TABLE_ID = "table_to_use";
+
+            /**
+             * The words to index.
+             * <P>Type: TEXT</P>
+             */
             public static final String INDEXED_TEXT = "index_text";
         }
     }
 
+    /**
+     * Carriers class contains information about APNs, including MMSC information.
+     */
     public static final class Carriers implements BaseColumns {
+
+        /**
+         * Not instantiable.
+         * @hide
+         */
+        private Carriers() {}
+
         /**
-         * The content:// style URL for this table
+         * The {@code content://} style URL for this table.
          */
-        public static final Uri CONTENT_URI =
-            Uri.parse("content://telephony/carriers");
+        public static final Uri CONTENT_URI = Uri.parse("content://telephony/carriers");
 
         /**
-         * The default sort order for this table
+         * The default sort order for this table.
          */
         public static final String DEFAULT_SORT_ORDER = "name ASC";
 
+        /**
+         * Entry name.
+         * <P>Type: TEXT</P>
+         */
         public static final String NAME = "name";
 
+        /**
+         * APN name.
+         * <P>Type: TEXT</P>
+         */
         public static final String APN = "apn";
 
+        /**
+         * Proxy address.
+         * <P>Type: TEXT</P>
+         */
         public static final String PROXY = "proxy";
 
+        /**
+         * Proxy port.
+         * <P>Type: TEXT</P>
+         */
         public static final String PORT = "port";
 
+        /**
+         * MMS proxy address.
+         * <P>Type: TEXT</P>
+         */
         public static final String MMSPROXY = "mmsproxy";
 
+        /**
+         * MMS proxy port.
+         * <P>Type: TEXT</P>
+         */
         public static final String MMSPORT = "mmsport";
 
+        /**
+         * Server address.
+         * <P>Type: TEXT</P>
+         */
         public static final String SERVER = "server";
 
+        /**
+         * APN username.
+         * <P>Type: TEXT</P>
+         */
         public static final String USER = "user";
 
+        /**
+         * APN password.
+         * <P>Type: TEXT</P>
+         */
         public static final String PASSWORD = "password";
 
+        /**
+         * MMSC URL.
+         * <P>Type: TEXT</P>
+         */
         public static final String MMSC = "mmsc";
 
+        /**
+         * Mobile Country Code (MCC).
+         * <P>Type: TEXT</P>
+         */
         public static final String MCC = "mcc";
 
+        /**
+         * Mobile Network Code (MNC).
+         * <P>Type: TEXT</P>
+         */
         public static final String MNC = "mnc";
 
+        /**
+         * Numeric operator ID (as String). Usually {@code MCC + MNC}.
+         * <P>Type: TEXT</P>
+         */
         public static final String NUMERIC = "numeric";
 
+        /**
+         * Authentication type.
+         * <P>Type:  INTEGER</P>
+         */
         public static final String AUTH_TYPE = "authtype";
 
+        /**
+         * Comma-delimited list of APN types.
+         * <P>Type: TEXT</P>
+         */
         public static final String TYPE = "type";
 
-        public static final String INACTIVE_TIMER = "inactivetimer";
-
-        // Only if enabled try Data Connection.
-        public static final String ENABLED = "enabled";
-
-        // Rules apply based on class.
-        public static final String CLASS = "class";
-
         /**
-         * The protocol to be used to connect to this APN.
+         * The protocol to use to connect to this APN.
          *
-         * One of the PDP_type values in TS 27.007 section 10.1.1.
-         * For example, "IP", "IPV6", "IPV4V6", or "PPP".
+         * One of the {@code PDP_type} values in TS 27.007 section 10.1.1.
+         * For example: {@code IP}, {@code IPV6}, {@code IPV4V6}, or {@code PPP}.
+         * <P>Type: TEXT</P>
          */
         public static final String PROTOCOL = "protocol";
 
         /**
-          * The protocol to be used to connect to this APN when roaming.
-          *
-          * The syntax is the same as protocol.
-          */
+         * The protocol to use to connect to this APN when roaming.
+         * The syntax is the same as protocol.
+         * <P>Type: TEXT</P>
+         */
         public static final String ROAMING_PROTOCOL = "roaming_protocol";
 
+        /**
+         * Is this the current APN?
+         * <P>Type: INTEGER (boolean)</P>
+         */
         public static final String CURRENT = "current";
 
         /**
-          * Current status of APN
-          * true : enabled APN, false : disabled APN.
-          */
+         * Is this APN enabled?
+         * <P>Type: INTEGER (boolean)</P>
+         */
         public static final String CARRIER_ENABLED = "carrier_enabled";
 
         /**
-          * Radio Access Technology info
-          * To check what values can hold, refer to ServiceState.java.
-          * This should be spread to other technologies,
-          * but currently only used for LTE(14) and EHRPD(13).
-          */
+         * Radio Access Technology info.
+         * To check what values are allowed, refer to {@link android.telephony.ServiceState}.
+         * This should be spread to other technologies,
+         * but is currently only used for LTE (14) and eHRPD (13).
+         * <P>Type: INTEGER</P>
+         */
         public static final String BEARER = "bearer";
 
         /**
-          * MVNO type
-          * spn(Service Provider Name), imsi, gid(Group Identifier Level 1)
-          */
+         * MVNO type:
+         * {@code SPN (Service Provider Name), IMSI, GID (Group Identifier Level 1)}.
+         * <P>Type: TEXT</P>
+         */
         public static final String MVNO_TYPE = "mvno_type";
 
         /**
-          * MVNO data
-          * Use the following examples.
-          * spn: A MOBILE, BEN NL, ...
-          * imsi: 302720x94, 2060188, ...
-          * gid: 4E, 33, ...
-          */
+         * MVNO data.
+         * Use the following examples.
+         * <ul>
+         *     <li>SPN: A MOBILE, BEN NL, ...</li>
+         *     <li>IMSI: 302720x94, 2060188, ...</li>
+         *     <li>GID: 4E, 33, ...</li>
+         * </ul>
+         * <P>Type: TEXT</P>
+         */
         public static final String MVNO_MATCH_DATA = "mvno_match_data";
     }
 
     /**
      * Contains received SMS cell broadcast messages.
+     * @hide
      */
     public static final class CellBroadcasts implements BaseColumns {
 
-        /** Not instantiable. */
+        /**
+         * Not instantiable.
+         * @hide
+         */
         private CellBroadcasts() {}
 
         /**
-         * The content:// style URL for this table
+         * The {@code content://} URI for this table.
          */
-        public static final Uri CONTENT_URI =
-            Uri.parse("content://cellbroadcasts");
+        public static final Uri CONTENT_URI = Uri.parse("content://cellbroadcasts");
 
         /**
          * Message geographical scope.
@@ -1955,8 +2349,8 @@ public final class Telephony {
         public static final String SERIAL_NUMBER = "serial_number";
 
         /**
-         * PLMN of broadcast sender. (SERIAL_NUMBER + PLMN + LAC + CID) uniquely identifies a
-         * broadcast for duplicate detection purposes.
+         * PLMN of broadcast sender. {@code SERIAL_NUMBER + PLMN + LAC + CID} uniquely identifies
+         * a broadcast for duplicate detection purposes.
          * <P>Type: TEXT</P>
          */
         public static final String PLMN = "plmn";
@@ -1976,19 +2370,19 @@ public final class Telephony {
         public static final String CID = "cid";
 
         /**
-         * Message code (OBSOLETE: merged into SERIAL_NUMBER).
+         * Message code. <em>OBSOLETE: merged into SERIAL_NUMBER.</em>
          * <P>Type: INTEGER</P>
          */
         public static final String V1_MESSAGE_CODE = "message_code";
 
         /**
-         * Message identifier (OBSOLETE: renamed to SERVICE_CATEGORY).
+         * Message identifier. <em>OBSOLETE: renamed to SERVICE_CATEGORY.</em>
          * <P>Type: INTEGER</P>
          */
         public static final String V1_MESSAGE_IDENTIFIER = "message_id";
 
         /**
-         * Service category (GSM/UMTS message identifier, CDMA service category).
+         * Service category (GSM/UMTS: message identifier; CDMA: service category).
          * <P>Type: INTEGER</P>
          */
         public static final String SERVICE_CATEGORY = "service_category";
@@ -2071,9 +2465,7 @@ public final class Telephony {
          */
         public static final String CMAS_CERTAINTY = "cmas_certainty";
 
-        /**
-         * The default sort order for this table
-         */
+        /** The default sort order for this table. */
         public static final String DEFAULT_SORT_ORDER = DELIVERY_TIME + " DESC";
 
         /**