Skip to content

Commit 2aeecb7

Browse files
Dave SantoroAndroid (Google) Code Review
authored andcommitted
Merge "Add new permissions for read/write social stream."
2 parents a1aebdf + 0b61f59 commit 2aeecb7

File tree

5 files changed

+67
-117
lines changed

5 files changed

+67
-117
lines changed

api/14.txt

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -16583,10 +16583,6 @@ package android.provider {
1658316583
field public static final java.lang.String PHOTO_FILE_ID = "data14";
1658416584
}
1658516585

16586-
public static final class ContactsContract.Contacts.StreamItems implements android.provider.ContactsContract.StreamItemsColumns {
16587-
field public static final java.lang.String CONTENT_DIRECTORY = "stream_items";
16588-
}
16589-
1659016586
protected static abstract interface ContactsContract.ContactsColumns {
1659116587
field public static final java.lang.String DISPLAY_NAME = "display_name";
1659216588
field public static final java.lang.String HAS_PHONE_NUMBER = "has_phone_number";
@@ -16844,10 +16840,6 @@ package android.provider {
1684416840
field public static final java.lang.String DATA_ID = "data_id";
1684516841
}
1684616842

16847-
public static final class ContactsContract.RawContacts.StreamItems implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemsColumns {
16848-
field public static final java.lang.String CONTENT_DIRECTORY = "stream_items";
16849-
}
16850-
1685116843
protected static abstract interface ContactsContract.RawContactsColumns {
1685216844
field public static final java.lang.String AGGREGATION_MODE = "aggregation_mode";
1685316845
field public static final java.lang.String CONTACT_ID = "contact_id";
@@ -16911,56 +16903,6 @@ package android.provider {
1691116903
field public static final android.net.Uri PROFILE_CONTENT_URI;
1691216904
}
1691316905

16914-
public static final class ContactsContract.StreamItemPhotos implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemPhotosColumns {
16915-
field public static final java.lang.String PHOTO = "photo";
16916-
}
16917-
16918-
protected static abstract interface ContactsContract.StreamItemPhotosColumns {
16919-
field public static final java.lang.String PHOTO_FILE_ID = "photo_file_id";
16920-
field public static final java.lang.String PHOTO_URI = "photo_uri";
16921-
field public static final java.lang.String SORT_INDEX = "sort_index";
16922-
field public static final java.lang.String STREAM_ITEM_ID = "stream_item_id";
16923-
field public static final java.lang.String SYNC1 = "stream_item_photo_sync1";
16924-
field public static final java.lang.String SYNC2 = "stream_item_photo_sync2";
16925-
field public static final java.lang.String SYNC3 = "stream_item_photo_sync3";
16926-
field public static final java.lang.String SYNC4 = "stream_item_photo_sync4";
16927-
}
16928-
16929-
public static final class ContactsContract.StreamItems implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemsColumns {
16930-
field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item";
16931-
field public static final android.net.Uri CONTENT_LIMIT_URI;
16932-
field public static final android.net.Uri CONTENT_PHOTO_URI;
16933-
field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item";
16934-
field public static final android.net.Uri CONTENT_URI;
16935-
field public static final java.lang.String MAX_ITEMS = "max_items";
16936-
}
16937-
16938-
public static final class ContactsContract.StreamItems.StreamItemPhotos implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemPhotosColumns {
16939-
field public static final java.lang.String CONTENT_DIRECTORY = "photo";
16940-
field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item_photo";
16941-
field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item_photo";
16942-
}
16943-
16944-
protected static abstract interface ContactsContract.StreamItemsColumns {
16945-
field public static final java.lang.String ACCOUNT_NAME = "account_name";
16946-
field public static final java.lang.String ACCOUNT_TYPE = "account_type";
16947-
field public static final java.lang.String COMMENTS = "comments";
16948-
field public static final java.lang.String CONTACT_ID = "contact_id";
16949-
field public static final java.lang.String CONTACT_LOOKUP_KEY = "contact_lookup";
16950-
field public static final java.lang.String DATA_SET = "data_set";
16951-
field public static final java.lang.String RAW_CONTACT_ID = "raw_contact_id";
16952-
field public static final java.lang.String RAW_CONTACT_SOURCE_ID = "raw_contact_source_id";
16953-
field public static final java.lang.String RES_ICON = "icon";
16954-
field public static final java.lang.String RES_LABEL = "label";
16955-
field public static final java.lang.String RES_PACKAGE = "res_package";
16956-
field public static final java.lang.String SYNC1 = "stream_item_sync1";
16957-
field public static final java.lang.String SYNC2 = "stream_item_sync2";
16958-
field public static final java.lang.String SYNC3 = "stream_item_sync3";
16959-
field public static final java.lang.String SYNC4 = "stream_item_sync4";
16960-
field public static final java.lang.String TEXT = "text";
16961-
field public static final java.lang.String TIMESTAMP = "timestamp";
16962-
}
16963-
1696416906
protected static abstract interface ContactsContract.SyncColumns implements android.provider.ContactsContract.BaseSyncColumns {
1696516907
field public static final java.lang.String ACCOUNT_NAME = "account_name";
1696616908
field public static final java.lang.String ACCOUNT_TYPE = "account_type";

api/current.txt

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -16583,10 +16583,6 @@ package android.provider {
1658316583
field public static final java.lang.String PHOTO_FILE_ID = "data14";
1658416584
}
1658516585

16586-
public static final class ContactsContract.Contacts.StreamItems implements android.provider.ContactsContract.StreamItemsColumns {
16587-
field public static final java.lang.String CONTENT_DIRECTORY = "stream_items";
16588-
}
16589-
1659016586
protected static abstract interface ContactsContract.ContactsColumns {
1659116587
field public static final java.lang.String DISPLAY_NAME = "display_name";
1659216588
field public static final java.lang.String HAS_PHONE_NUMBER = "has_phone_number";
@@ -16844,10 +16840,6 @@ package android.provider {
1684416840
field public static final java.lang.String DATA_ID = "data_id";
1684516841
}
1684616842

16847-
public static final class ContactsContract.RawContacts.StreamItems implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemsColumns {
16848-
field public static final java.lang.String CONTENT_DIRECTORY = "stream_items";
16849-
}
16850-
1685116843
protected static abstract interface ContactsContract.RawContactsColumns {
1685216844
field public static final java.lang.String AGGREGATION_MODE = "aggregation_mode";
1685316845
field public static final java.lang.String CONTACT_ID = "contact_id";
@@ -16911,56 +16903,6 @@ package android.provider {
1691116903
field public static final android.net.Uri PROFILE_CONTENT_URI;
1691216904
}
1691316905

16914-
public static final class ContactsContract.StreamItemPhotos implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemPhotosColumns {
16915-
field public static final java.lang.String PHOTO = "photo";
16916-
}
16917-
16918-
protected static abstract interface ContactsContract.StreamItemPhotosColumns {
16919-
field public static final java.lang.String PHOTO_FILE_ID = "photo_file_id";
16920-
field public static final java.lang.String PHOTO_URI = "photo_uri";
16921-
field public static final java.lang.String SORT_INDEX = "sort_index";
16922-
field public static final java.lang.String STREAM_ITEM_ID = "stream_item_id";
16923-
field public static final java.lang.String SYNC1 = "stream_item_photo_sync1";
16924-
field public static final java.lang.String SYNC2 = "stream_item_photo_sync2";
16925-
field public static final java.lang.String SYNC3 = "stream_item_photo_sync3";
16926-
field public static final java.lang.String SYNC4 = "stream_item_photo_sync4";
16927-
}
16928-
16929-
public static final class ContactsContract.StreamItems implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemsColumns {
16930-
field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item";
16931-
field public static final android.net.Uri CONTENT_LIMIT_URI;
16932-
field public static final android.net.Uri CONTENT_PHOTO_URI;
16933-
field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item";
16934-
field public static final android.net.Uri CONTENT_URI;
16935-
field public static final java.lang.String MAX_ITEMS = "max_items";
16936-
}
16937-
16938-
public static final class ContactsContract.StreamItems.StreamItemPhotos implements android.provider.BaseColumns android.provider.ContactsContract.StreamItemPhotosColumns {
16939-
field public static final java.lang.String CONTENT_DIRECTORY = "photo";
16940-
field public static final java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item_photo";
16941-
field public static final java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item_photo";
16942-
}
16943-
16944-
protected static abstract interface ContactsContract.StreamItemsColumns {
16945-
field public static final java.lang.String ACCOUNT_NAME = "account_name";
16946-
field public static final java.lang.String ACCOUNT_TYPE = "account_type";
16947-
field public static final java.lang.String COMMENTS = "comments";
16948-
field public static final java.lang.String CONTACT_ID = "contact_id";
16949-
field public static final java.lang.String CONTACT_LOOKUP_KEY = "contact_lookup";
16950-
field public static final java.lang.String DATA_SET = "data_set";
16951-
field public static final java.lang.String RAW_CONTACT_ID = "raw_contact_id";
16952-
field public static final java.lang.String RAW_CONTACT_SOURCE_ID = "raw_contact_source_id";
16953-
field public static final java.lang.String RES_ICON = "icon";
16954-
field public static final java.lang.String RES_LABEL = "label";
16955-
field public static final java.lang.String RES_PACKAGE = "res_package";
16956-
field public static final java.lang.String SYNC1 = "stream_item_sync1";
16957-
field public static final java.lang.String SYNC2 = "stream_item_sync2";
16958-
field public static final java.lang.String SYNC3 = "stream_item_sync3";
16959-
field public static final java.lang.String SYNC4 = "stream_item_sync4";
16960-
field public static final java.lang.String TEXT = "text";
16961-
field public static final java.lang.String TIMESTAMP = "timestamp";
16962-
}
16963-
1696416906
protected static abstract interface ContactsContract.SyncColumns implements android.provider.ContactsContract.BaseSyncColumns {
1696516907
field public static final java.lang.String ACCOUNT_NAME = "account_name";
1696616908
field public static final java.lang.String ACCOUNT_TYPE = "account_type";

core/java/android/provider/ContactsContract.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,9 +1611,16 @@ private Entity() {
16111611
}
16121612

16131613
/**
1614+
* <p>
16141615
* A sub-directory of a single contact that contains all of the constituent raw contact
16151616
* {@link ContactsContract.StreamItems} rows. This directory can be used either
16161617
* with a {@link #CONTENT_URI} or {@link #CONTENT_LOOKUP_URI}.
1618+
* </p>
1619+
* <p>
1620+
* Querying for social stream data requires android.permission.READ_SOCIAL_STREAM
1621+
* permission.
1622+
* </p>
1623+
* @hide
16171624
*/
16181625
public static final class StreamItems implements StreamItemsColumns {
16191626
/**
@@ -2669,6 +2676,14 @@ private Entity() {
26692676
* {@link ContactsContract.StreamItems} for a stand-alone table containing the
26702677
* same data.
26712678
* </p>
2679+
* <p>
2680+
* Access to the social stream through this sub-directory requires additional permissions
2681+
* beyond the read/write contact permissions required by the provider. Querying for
2682+
* social stream data requires android.permission.READ_SOCIAL_STREAM permission, and
2683+
* inserting or updating social stream items requires android.permission.WRITE_SOCIAL_STREAM
2684+
* permission.
2685+
* </p>
2686+
* @hide
26722687
*/
26732688
public static final class StreamItems implements BaseColumns, StreamItemsColumns {
26742689
/**
@@ -2963,6 +2978,12 @@ protected interface StatusColumns {
29632978
* transaction correspondingly. Insertion of more items beyond the limit will
29642979
* automatically lead to deletion of the oldest items, by {@link StreamItems#TIMESTAMP}.
29652980
* </p>
2981+
* <p>
2982+
* Access to the social stream through these URIs requires additional permissions beyond the
2983+
* read/write contact permissions required by the provider. Querying for social stream data
2984+
* requires android.permission.READ_SOCIAL_STREAM permission, and inserting or updating social
2985+
* stream items requires android.permission.WRITE_SOCIAL_STREAM permission.
2986+
* </p>
29662987
* <h3>Operations</h3>
29672988
* <dl>
29682989
* <dt><b>Insert</b></dt>
@@ -3075,6 +3096,7 @@ protected interface StatusColumns {
30753096
* </pre>
30763097
* </dd>
30773098
* </dl>
3099+
* @hide
30783100
*/
30793101
public static final class StreamItems implements BaseColumns, StreamItemsColumns {
30803102
/**
@@ -3135,6 +3157,12 @@ private StreamItems() {
31353157
* directory append {@link StreamItems.StreamItemPhotos#CONTENT_DIRECTORY} to
31363158
* an individual stream item URI.
31373159
* </p>
3160+
* <p>
3161+
* Access to social stream photos requires additional permissions beyond the read/write
3162+
* contact permissions required by the provider. Querying for social stream photos
3163+
* requires android.permission.READ_SOCIAL_STREAM permission, and inserting or updating
3164+
* social stream photos requires android.permission.WRITE_SOCIAL_STREAM permission.
3165+
* </p>
31383166
*/
31393167
public static final class StreamItemPhotos
31403168
implements BaseColumns, StreamItemPhotosColumns {
@@ -3166,6 +3194,7 @@ private StreamItemPhotos() {
31663194
* Columns in the StreamItems table.
31673195
*
31683196
* @see ContactsContract.StreamItems
3197+
* @hide
31693198
*/
31703199
protected interface StreamItemsColumns {
31713200
/**
@@ -3312,6 +3341,12 @@ protected interface StreamItemsColumns {
33123341
* Constants for the stream_item_photos table, which contains photos associated with
33133342
* social stream updates.
33143343
* </p>
3344+
* <p>
3345+
* Access to social stream photos requires additional permissions beyond the read/write
3346+
* contact permissions required by the provider. Querying for social stream photos
3347+
* requires android.permission.READ_SOCIAL_STREAM permission, and inserting or updating
3348+
* social stream photos requires android.permission.WRITE_SOCIAL_STREAM permission.
3349+
* </p>
33153350
* <h3>Operations</h3>
33163351
* <dl>
33173352
* <dt><b>Insert</b></dt>
@@ -3450,6 +3485,7 @@ protected interface StreamItemsColumns {
34503485
* <pre>
34513486
* </dd>
34523487
* </dl>
3488+
* @hide
34533489
*/
34543490
public static final class StreamItemPhotos implements BaseColumns, StreamItemPhotosColumns {
34553491
/**
@@ -3477,6 +3513,7 @@ private StreamItemPhotos() {
34773513
* Columns in the StreamItemPhotos table.
34783514
*
34793515
* @see ContactsContract.StreamItemPhotos
3516+
* @hide
34803517
*/
34813518
protected interface StreamItemPhotosColumns {
34823519
/**

core/res/AndroidManifest.xml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,23 @@
263263
android:label="@string/permlab_writeProfile"
264264
android:description="@string/permdesc_writeProfile" />
265265

266+
<!-- Allows an application to read from the user's social stream.
267+
@hide -->
268+
<permission android:name="android.permission.READ_SOCIAL_STREAM"
269+
android:permissionGroup="android.permission-group.PERSONAL_INFO"
270+
android:protectionLevel="dangerous"
271+
android:label="@string/permlab_readSocialStream"
272+
android:description="@string/permdesc_readSocialStream" />
273+
274+
<!-- Allows an application to write (but not read) the user's
275+
social stream data.
276+
@hide -->
277+
<permission android:name="android.permission.WRITE_SOCIAL_STREAM"
278+
android:permissionGroup="android.permission-group.PERSONAL_INFO"
279+
android:protectionLevel="dangerous"
280+
android:label="@string/permlab_writeSocialStream"
281+
android:description="@string/permdesc_writeSocialStream" />
282+
266283
<!-- Allows an application to read the user's calendar data. -->
267284
<permission android:name="android.permission.READ_CALENDAR"
268285
android:permissionGroup="android.permission-group.PERSONAL_INFO"

core/res/res/values/strings.xml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -941,6 +941,18 @@
941941
information. This means other applications can identify you and send your profile
942942
information to others.</string>
943943

944+
<!-- Title of the read social stream permission, listed so the user can decide whether to allow the application to read information from the user's social stream. [CHAR LIMIT=30] -->
945+
<string name="permlab_readSocialStream" product="default">read your social stream</string>
946+
<string name="permdesc_readSocialStream" product="default">Allows the application to access and
947+
sync social updates from your friends. Malicious apps can use this to access private
948+
communications between you and your friends on social networks.</string>
949+
950+
<!-- Title of the write social stream permission, listed so the user can decide whether to allow the application to write information to the user's social stream. [CHAR LIMIT=30] -->
951+
<string name="permlab_writeSocialStream" product="default">write to your social stream</string>
952+
<string name="permdesc_writeSocialStream" product="default">Allows the application to provide
953+
social updates from your friends. Malicious apps can use this to fake updates from your
954+
friends, for instance to phish confidential information from you.</string>
955+
944956
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
945957
<string name="permlab_readCalendar">read calendar events plus confidential information</string>
946958
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
@@ -3316,4 +3328,4 @@
33163328
<!-- Delimeter used between each item in a textual list; for example "Alpha, Beta". [CHAR LIMIT=3] -->
33173329
<string name="list_delimeter">", "</string>
33183330

3319-
</resources>
3331+
</resources>

0 commit comments

Comments
 (0)