java.lang.Object | |
↳ | android.provider.ContactsContract.StreamItemPhotos |
Constants for the stream_item_photos table, which contains photos associated with social stream updates.
Access to social stream photos requires additional permissions beyond the read/write contact permissions required by the provider. Querying for social stream photos requires android.permission.READ_SOCIAL_STREAM permission, and inserting or updating social stream photos requires android.permission.WRITE_SOCIAL_STREAM permission.
The content URIs to the insert, update and delete operations are required to have the account
information matching that of the owning raw contact as query parameters, namely
ACCOUNT_TYPE
and ACCOUNT_NAME
.
DATA_SET
isn't required.
Social stream photo entries are associated with a social stream item. Photos can be inserted into a social stream item in a couple of ways:
CONTENT_DIRECTORY
sub-path of a
stream item:
ContentValues values = new ContentValues(); values.put(StreamItemPhotos.SORT_INDEX, 1); values.put(StreamItemPhotos.PHOTO, photoData); Uri.Builder builder = StreamItems.CONTENT_URI.buildUpon(); ContentUris.appendId(builder, streamItemId); builder.appendEncodedPath(StreamItems.StreamItemPhotos.CONTENT_DIRECTORY); builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); Uri photoUri = getContentResolver().insert(builder.build(), values); long photoId = ContentUris.parseId(photoUri);
CONTENT_PHOTO_URI
URI:ContentValues values = new ContentValues(); values.put(StreamItemPhotos.STREAM_ITEM_ID, streamItemId); values.put(StreamItemPhotos.SORT_INDEX, 1); values.put(StreamItemPhotos.PHOTO, photoData); Uri.Builder builder = StreamItems.CONTENT_PHOTO_URI.buildUpon(); builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); Uri photoUri = getContentResolver().insert(builder.build(), values); long photoId = ContentUris.parseId(photoUri);
Updates can only be made against a specific ContactsContract.StreamItems.StreamItemPhotos
entry,
identified by both the stream item ID it belongs to and the stream item photo ID.
This can be specified in two ways.
CONTENT_DIRECTORY
sub-path of a
stream item:
ContentValues values = new ContentValues(); values.put(StreamItemPhotos.PHOTO, newPhotoData); Uri.Builder builder = StreamItems.CONTENT_URI.buildUpon(); ContentUris.appendId(builder, streamItemId); builder.appendEncodedPath(StreamItems.StreamItemPhotos.CONTENT_DIRECTORY); ContentUris.appendId(builder, streamItemPhotoId); builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); getContentResolver().update(builder.build(), values, null, null);
CONTENT_PHOTO_URI
URI:ContentValues values = new ContentValues(); values.put(StreamItemPhotos.STREAM_ITEM_ID, streamItemId); values.put(StreamItemPhotos.PHOTO, newPhotoData); Uri.Builder builder = StreamItems.CONTENT_PHOTO_URI.buildUpon(); builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); getContentResolver().update(builder.build(), values);
CONTENT_DIRECTORY
sub-path of a stream item:
Uri.Builder builder = StreamItems.CONTENT_URI.buildUpon(); ContentUris.appendId(builder, streamItemId); builder.appendEncodedPath(StreamItems.StreamItemPhotos.CONTENT_DIRECTORY); ContentUris.appendId(builder, streamItemPhotoId); builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); getContentResolver().delete(builder.build(), null, null);
Uri.Builder builder = StreamItems.CONTENT_URI.buildUpon(); ContentUris.appendId(builder, streamItemId); builder.appendEncodedPath(StreamItems.StreamItemPhotos.CONTENT_DIRECTORY); builder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName); builder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType); getContentResolver().delete(builder.build(), null, null);
Cursor c = getContentResolver().query( ContentUris.withAppendedId( Uri.withAppendedPath( ContentUris.withAppendedId(StreamItems.CONTENT_URI, streamItemId) StreamItems.StreamItemPhotos#CONTENT_DIRECTORY), streamItemPhotoId), null, null, null, null);
Cursor c = getContentResolver().query( Uri.withAppendedPath( ContentUris.withAppendedId(StreamItems.CONTENT_URI, streamItemId) StreamItems.StreamItemPhotos#CONTENT_DIRECTORY), null, null, null, StreamItemPhotos.SORT_INDEX);
PHOTO_FILE_ID
and a
PHOTO_URI
. The PHOTO_FILE_ID
can be used in conjunction with the ContactsContract.DisplayPhoto
API to
retrieve photo content, or you can open the PHOTO_URI
as
an asset file, as follows:
public InputStream openDisplayPhoto(String photoUri) { try { AssetFileDescriptor fd = getContentResolver().openAssetFileDescriptor(photoUri, "r"); return fd.createInputStream(); } catch (IOException e) { return null; } }
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | PHOTO | The binary representation of the photo. |
[Expand]
Inherited Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From interface
android.provider.BaseColumns
| |||||||||||
From interface
android.provider.ContactsContract.StreamItemPhotosColumns
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
|
The binary representation of the photo. Any size photo can be inserted; the provider will resize it appropriately for storage and display.
This is only intended for use when inserting or updating a stream item photo.
To retrieve the photo that was stored, open PHOTO_URI
as an asset file.
Type: BLOB