diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index 61deea4..9c12a44 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -135,14 +135,6 @@
     public static final String ALLOW_PROFILE = "allow_profile";
 
     /**
-     * A query parameter key used to specify the package that is requesting a query.
-     * This is used for restricting data based on package name.
-     *
-     * @hide
-     */
-    public static final String REQUESTING_PACKAGE_PARAM_KEY = "requesting_package";
-
-    /**
      * Query parameter that should be used by the client to access a specific
      * {@link Directory}. The parameter value should be the _ID of the corresponding
      * directory, e.g.
@@ -271,8 +263,6 @@
      * <li>The URI authority is replaced with the corresponding {@link #DIRECTORY_AUTHORITY}.</li>
      * <li>The {@code accountName=} and {@code accountType=} parameters are added or
      * replaced using the corresponding {@link #ACCOUNT_TYPE} and {@link #ACCOUNT_NAME} values.</li>
-     * <li>If the URI is missing a ContactsContract.REQUESTING_PACKAGE_PARAM_KEY
-     * parameter, this parameter is added.</li>
      * </ul>
      * </p>
      * <p>
@@ -1881,15 +1871,6 @@
         public static final String CONTACT_ID = "contact_id";
 
         /**
-         * Flag indicating that this {@link RawContacts} entry and its children have
-         * been restricted to specific platform apps.
-         * <P>Type: INTEGER (boolean)</P>
-         *
-         * @hide until finalized in future platform release
-         */
-        public static final String IS_RESTRICTED = "is_restricted";
-
-        /**
          * The aggregation mode for this contact.
          * <P>Type: INTEGER</P>
          */
@@ -2537,7 +2518,6 @@
                 DatabaseUtils.cursorLongToContentValuesIfPresent(cursor, cv, DELETED);
                 DatabaseUtils.cursorLongToContentValuesIfPresent(cursor, cv, CONTACT_ID);
                 DatabaseUtils.cursorLongToContentValuesIfPresent(cursor, cv, STARRED);
-                DatabaseUtils.cursorIntToContentValuesIfPresent(cursor, cv, IS_RESTRICTED);
                 DatabaseUtils.cursorIntToContentValuesIfPresent(cursor, cv, NAME_VERIFIED);
                 android.content.Entity contact = new android.content.Entity(cv);
 
@@ -3814,27 +3794,6 @@
 
         /**
          * <p>
-         * If {@link #FOR_EXPORT_ONLY} is explicitly set to "1", returned Cursor toward
-         * Data.CONTENT_URI contains only exportable data.
-         * </p>
-         * <p>
-         * This flag is useful (currently) only for vCard exporter in Contacts app, which
-         * needs to exclude "un-exportable" data from available data to export, while
-         * Contacts app itself has priviledge to access all data including "un-exportable"
-         * ones and providers return all of them regardless of the callers' intention.
-         * </p>
-         * <p>
-         * Type: INTEGER
-         * </p>
-         *
-         * @hide Maybe available only in Eclair and not really ready for public use.
-         * TODO: remove, or implement this feature completely. As of now (Eclair),
-         * we only use this flag in queryEntities(), not query().
-         */
-        public static final String FOR_EXPORT_ONLY = "for_export_only";
-
-        /**
-         * <p>
          * Build a {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}
          * style {@link Uri} for the parent {@link android.provider.ContactsContract.Contacts}
          * entry of the given {@link ContactsContract.Data} entry.
