Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2091512
  • 博文数量: 413
  • 博客积分: 10926
  • 博客等级: 上将
  • 技术积分: 3862
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-09 18:14
文章分类

全部博文(413)

文章存档

2015年(5)

2014年(1)

2013年(5)

2012年(6)

2011年(138)

2010年(85)

2009年(42)

2008年(46)

2007年(26)

2006年(59)

分类: LINUX

2010-04-09 17:05:05

Notes:

In practice, the symbol '#' in provider name must be replaced with the value of thread id, i.e. if you want to get address of mms, you need to use provider 'content://mms/#/addr', here the symbol '#' must be changed to the value of 'thread_id'. the sample code, please refer to http://blog.chinaunix.net/u/9577/showart_2211060.html

Contents URIs and column related to mms/sms/mms-sms/contacts/telephony are defined in java.android.provider.Telephony.java

Some of Android shiped content provider:
http://developer.android.com/reference/android/provider/package-summary.html


ContactsProvider

ContactProvider를 사용하는 애플리케이션의 AndroidManifest.xml에 다음 추가

 android:name="android.permission.READ_CONTACTS" />
android:name="android.permission.WRITE_CONTACTS" />

  1. BaseContactsProvider2Test.java
  2. CallLogProviderTest.java
  3. CallerInfoIntegrationTest.java
  4. ContactAggregationSchedulerTest.java
  5. ContactAggregatorPerformanceTest.java
  6. ContactAggregatorTest.java
  7. ContactLookupKeyTest.java
  8. ContactsActor.java
  9. ContactsProvider2Test.java
  10. GlobalSearchSupportTest.java
  11. GroupsTest.java
  12. LegacyContactImporterPerformanceTest.java
  13. LegacyContactImporterTest.java
  14. LegacyContactsProviderTest.java
  15. NameDistanceTest.java
  16. NameLookupBuilderTest.java
  17. NameNormalizerTest.java
  18. NameSplitterTest.java
  19. PostalSplitterTest.java
  20. RestrictionExceptionsTest.java
  21. SynchronousContactsProvider2.java

ContactsProvider2

  • ContactsContract.AUTHORITY = "com.android.contacts"

ContactsProvider2의 사용가능한 URI

content://com.android.contacts/contacts
content://com.android.contacts/contacts/#
content://com.android.contacts/contacts/#/data
content://com.android.contacts/contacts/#/suggestions
content://com.android.contacts/contacts/#/suggestions/*
content://com.android.contacts/contacts/#/photo
content://com.android.contacts/contacts/filter/*
content://com.android.contacts/contacts/lookup/*
content://com.android.contacts/contacts/lookup/*/#
content://com.android.contacts/contacts/as_vcard/*
content://com.android.contacts/contacts/strequent/
content://com.android.contacts/contacts/strequent/filter/*
content://com.android.contacts/contacts/group/*
 
content://com.android.contacts/raw_contacts
content://com.android.contacts/raw_contacts/#
content://com.android.contacts/raw_contacts/#/data
content://com.android.contacts/raw_contacts/#/entity
 
content://com.android.contacts/raw_contact_entities
 
content://com.android.contacts/data
content://com.android.contacts/data/#
content://com.android.contacts/data/phones
content://com.android.contacts/data/phones/#
content://com.android.contacts/data/phones/filter
content://com.android.contacts/data/phones/filter/*
content://com.android.contacts/data/emails
content://com.android.contacts/data/emails/#
content://com.android.contacts/data/emails/lookup/*
content://com.android.contacts/data/emails/filter
content://com.android.contacts/data/emails/filter/*
content://com.android.contacts/data/postals
content://com.android.contacts/data/postals/#
 
content://com.android.contacts/groups"
content://com.android.contacts/groups/#
content://com.android.contacts/groups_summary
 
matcher.addURI(ContactsContract.AUTHORITY, SyncStateContentProviderHelper.PATH, SYNCSTATE);
matcher.addURI(ContactsContract.AUTHORITY, SyncStateContentProviderHelper.PATH + "/#", SYNCSTATE_ID);
 
content://com.android.contacts/phone_lookup/*
content://com.android.contacts/aggregation_exceptions
content://com.android.contacts/aggregation_exceptions/*
 
content://com.android.contacts/settings
 
content://com.android.contacts/status_updates
content://com.android.contacts/status_updates/#
 
matcher.addURI(ContactsContract.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY, SEARCH_SUGGESTIONS);
matcher.addURI(ContactsContract.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY + "/*", SEARCH_SUGGESTIONS);
matcher.addURI(ContactsContract.AUTHORITY, SearchManager.SUGGEST_URI_PATH_SHORTCUT + "/#", SEARCH_SHORTCUT);
 
content://com.android.contacts/live_folders/contacts
content://com.android.contacts/live_folders/contacts/*
content://com.android.contacts/live_folders/contacts_with_phones
content://com.android.contacts/live_folders/favorites

ContactsProvider

  • Database name : contacts_db
  • Tables
    • people, peopleLookup, _deleted_people, phones, contact_methods, calls
    • organizations, voice_dialer_timestamp, groups, _deleted_groups, groupmembership
    • photos, extensions, settings

ContactsProvider의 사용가능한 URI

  • CONTACTS_AUTHORITY = "contacts"
// Contacts URI matching table
content://contacts/extensions
content://contacts/extensions/#
content://contacts/groups
content://contacts/groups/#"
content://contacts/groups/name/*/members
content://contacts/groups/name/*/members/filter/*
content://contacts/groups/system_id/*/members
content://contacts/groups/system_id/*/members/filter/*
content://contacts/groupmembership
content://contacts/groupmembership/#
content://contacts/groupmembershipraw
content://contacts/people
content://contacts/people/strequent
content://contacts/people/strequent/filter/*
content://contacts/people/filter/*
content://contacts/people/with_phones_filter/*
content://contacts/people/with_email_or_im_filter/*
content://contacts/people/#
content://contacts/people/#/extensions
content://contacts/people/#/extensions/#
content://contacts/people/#/phones
content://contacts/people/#/phones_with_presence
content://contacts/people/#/photo
content://contacts/people/#/photo/data
content://contacts/people/#/phones/#
content://contacts/people/#/contact_methods
content://contacts/people/#/contact_methods_with_presence
content://contacts/people/#/contact_methods/#
content://contacts/people/#/organizations
content://contacts/people/#/organizations/#
content://contacts/people/#/groupmembership
content://contacts/people/#/groupmembership/#
content://contacts/people/raw
content://contacts/people/owner
content://contacts/people/#/update_contact_time
content://contacts/deleted_people
content://contacts/deleted_groups
content://contacts/phones
content://contacts/phones_with_presence
content://contacts/phones/filter/*
content://contacts/phones/filter_name/*
content://contacts/phones/mobile_filter_name/*
content://contacts/phones/#
content://contacts/photos
content://contacts/photos/#
content://contacts/contact_methods
content://contacts/contact_methods/email
content://contacts/contact_methods/email/*
content://contacts/contact_methods/#
content://contacts/contact_methods/with_presence
content://contacts/presence
content://contacts/presence/#
content://contacts/organizations
content://contacts/organizations/#
content://contacts/voice_dialer_timestamp
matcher.addURI(CONTACTS_AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY, SEARCH_SUGGESTIONS);
matcher.addURI(CONTACTS_AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY + "/*", SEARCH_SUGGESTIONS);
matcher.addURI(CONTACTS_AUTHORITY, SearchManager.SUGGEST_URI_PATH_SHORTCUT + "/#", SEARCH_SHORTCUT);
content://contacts/settings
 
content://contacts/live_folders/people
content://contacts/live_folders/people/*
content://contacts/live_folders/people_with_phones
content://contacts/live_folders/favorites

CallLogProvider

CallLogProvider의 사용가능한 URI

  • CallLog.CONTENT_URI - content:// 타입의 URI
  • CallLog.AUTHORITY = "call_log"
content://call_log/calls
content://call_log/calls/#
content://call_log/calls/filter/*
  • Database table : calls
  • URI 형식
    • CALLS - 모두 반환
    • CALLS_ID
      • 형식 : contents://call_log/calls/30
      • SQL 문 : where calls._id=?
    • CALLS_FILTER
      • 형식 : contents://call_log/calls/filter/02-123-4567
      • SQL 문 : where PHONE_NUMBERS_EQUAL(number, '02-123-4567')

Calls projection map

private static final HashMap<String, String> sCallsProjectionMap;
static {
// Calls projection map
sCallsProjectionMap = new HashMap<String, String>();
sCallsProjectionMap.put(Calls._ID, Calls._ID);
sCallsProjectionMap.put(Calls.NUMBER, Calls.NUMBER);
sCallsProjectionMap.put(Calls.DATE, Calls.DATE);
sCallsProjectionMap.put(Calls.DURATION, Calls.DURATION);
sCallsProjectionMap.put(Calls.TYPE, Calls.TYPE);
sCallsProjectionMap.put(Calls.NEW, Calls.NEW);
sCallsProjectionMap.put(Calls.CACHED_NAME, Calls.CACHED_NAME);
sCallsProjectionMap.put(Calls.CACHED_NUMBER_TYPE, Calls.CACHED_NUMBER_TYPE);
sCallsProjectionMap.put(Calls.CACHED_NUMBER_LABEL, Calls.CACHED_NUMBER_LABEL);
}

생성한 데이터베이스 테이블

Tables.CONTACTS

// One row per group of contacts corresponding to the same person
db.execSQL("CREATE TABLE " + Tables.CONTACTS + " (" +
BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
Contacts.DISPLAY_NAME + " TEXT," +
Contacts.PHOTO_ID + " INTEGER REFERENCES data(_id)," +
Contacts.CUSTOM_RINGTONE + " TEXT," +
Contacts.SEND_TO_VOICEMAIL + " INTEGER NOT NULL DEFAULT 0," +
Contacts.TIMES_CONTACTED + " INTEGER NOT NULL DEFAULT 0," +
Contacts.LAST_TIME_CONTACTED + " INTEGER," +
Contacts.STARRED + " INTEGER NOT NULL DEFAULT 0," +
Contacts.IN_VISIBLE_GROUP + " INTEGER NOT NULL DEFAULT 1," +
Contacts.HAS_PHONE_NUMBER + " INTEGER NOT NULL DEFAULT 0," +
Contacts.LOOKUP_KEY + " TEXT," +
ContactsColumns.LAST_STATUS_UPDATE_ID + " INTEGER REFERENCES data(_id)," +
ContactsColumns.SINGLE_IS_RESTRICTED + " INTEGER NOT NULL DEFAULT 0" +
");");

Tables.RAW_CONTACTS

// Contacts table
db.execSQL("CREATE TABLE " + Tables.RAW_CONTACTS + " (" +
RawContacts._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
RawContacts.IS_RESTRICTED + " INTEGER DEFAULT 0," +
RawContacts.ACCOUNT_NAME + " STRING DEFAULT NULL, " +
RawContacts.ACCOUNT_TYPE + " STRING DEFAULT NULL, " +
RawContacts.SOURCE_ID + " TEXT," +
RawContacts.VERSION + " INTEGER NOT NULL DEFAULT 1," +
RawContacts.DIRTY + " INTEGER NOT NULL DEFAULT 0," +
RawContacts.DELETED + " INTEGER NOT NULL DEFAULT 0," +
RawContacts.CONTACT_ID + " INTEGER REFERENCES contacts(_id)," +
RawContacts.AGGREGATION_MODE + " INTEGER NOT NULL DEFAULT " +
RawContacts.AGGREGATION_MODE_DEFAULT + "," +
RawContactsColumns.AGGREGATION_NEEDED + " INTEGER NOT NULL DEFAULT 1," +
RawContacts.CUSTOM_RINGTONE + " TEXT," +
RawContacts.SEND_TO_VOICEMAIL + " INTEGER NOT NULL DEFAULT 0," +
RawContacts.TIMES_CONTACTED + " INTEGER NOT NULL DEFAULT 0," +
RawContacts.LAST_TIME_CONTACTED + " INTEGER," +
RawContacts.STARRED + " INTEGER NOT NULL DEFAULT 0," +
RawContactsColumns.DISPLAY_NAME + " TEXT," +
RawContactsColumns.DISPLAY_NAME_SOURCE + " INTEGER NOT NULL DEFAULT " + DisplayNameSources.UNDEFINED + "," +
RawContacts.SYNC1 + " TEXT, " +
RawContacts.SYNC2 + " TEXT, " +
RawContacts.SYNC3 + " TEXT, " +
RawContacts.SYNC4 + " TEXT " +
");");

Tables.DATA

// Public generic data table
db.execSQL("CREATE TABLE " + Tables.DATA + " (" +
Data._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
DataColumns.PACKAGE_ID + " INTEGER REFERENCES package(_id)," +
DataColumns.MIMETYPE_ID + " INTEGER REFERENCES mimetype(_id) NOT NULL," +
Data.RAW_CONTACT_ID + " INTEGER REFERENCES raw_contacts(_id) NOT NULL," +
Data.IS_PRIMARY + " INTEGER NOT NULL DEFAULT 0," +
Data.IS_SUPER_PRIMARY + " INTEGER NOT NULL DEFAULT 0," +
Data.DATA_VERSION + " INTEGER NOT NULL DEFAULT 0," +
Data.DATA1 + " TEXT," +
Data.DATA2 + " TEXT," +
Data.DATA3 + " TEXT," +
Data.DATA4 + " TEXT," +
Data.DATA5 + " TEXT," +
Data.DATA6 + " TEXT," +
Data.DATA7 + " TEXT," +
Data.DATA8 + " TEXT," +
Data.DATA9 + " TEXT," +
Data.DATA10 + " TEXT," +
Data.DATA11 + " TEXT," +
Data.DATA12 + " TEXT," +
Data.DATA13 + " TEXT," +
Data.DATA14 + " TEXT," +
Data.DATA15 + " TEXT," +
Data.SYNC1 + " TEXT, " +
Data.SYNC2 + " TEXT, " +
Data.SYNC3 + " TEXT, " +
Data.SYNC4 + " TEXT " +
");");

Tables.GROUPS

// Groups table
db.execSQL("CREATE TABLE " + Tables.GROUPS + " (" +
Groups._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
GroupsColumns.PACKAGE_ID + " INTEGER REFERENCES package(_id)," +
Groups.ACCOUNT_NAME + " STRING DEFAULT NULL, " +
Groups.ACCOUNT_TYPE + " STRING DEFAULT NULL, " +
Groups.SOURCE_ID + " TEXT," +
Groups.VERSION + " INTEGER NOT NULL DEFAULT 1," +
Groups.DIRTY + " INTEGER NOT NULL DEFAULT 0," +
Groups.TITLE + " TEXT," +
Groups.TITLE_RES + " INTEGER," +
Groups.NOTES + " TEXT," +
Groups.SYSTEM_ID + " TEXT," +
Groups.DELETED + " INTEGER NOT NULL DEFAULT 0," +
Groups.GROUP_VISIBLE + " INTEGER NOT NULL DEFAULT 0," +
Groups.SHOULD_SYNC + " INTEGER NOT NULL DEFAULT 1," +
Groups.SYNC1 + " TEXT, " +
Groups.SYNC2 + " TEXT, " +
Groups.SYNC3 + " TEXT, " +
Groups.SYNC4 + " TEXT " +
");");

Tables.CALLS

// The table for recent calls is here so we can do table joins
// on people, phones, and calls all in one place.
db.execSQL("CREATE TABLE " + Tables.CALLS + " (" +
Calls._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
Calls.NUMBER + " TEXT," +
Calls.DATE + " INTEGER," +
Calls.DURATION + " INTEGER," +
Calls.TYPE + " INTEGER," +
Calls.NEW + " INTEGER," +
Calls.CACHED_NAME + " TEXT," +
Calls.CACHED_NUMBER_TYPE + " INTEGER," +
Calls.CACHED_NUMBER_LABEL + " TEXT" +
");");

Tables.ACTIVITIES

// Activities table
db.execSQL("CREATE TABLE " + Tables.ACTIVITIES + " (" +
Activities._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
ActivitiesColumns.PACKAGE_ID + " INTEGER REFERENCES package(_id)," +
ActivitiesColumns.MIMETYPE_ID + " INTEGER REFERENCES mimetype(_id) NOT NULL," +
Activities.RAW_ID + " TEXT," +
Activities.IN_REPLY_TO + " TEXT," +
Activities.AUTHOR_CONTACT_ID + " INTEGER REFERENCES raw_contacts(_id)," +
Activities.TARGET_CONTACT_ID + " INTEGER REFERENCES raw_contacts(_id)," +
Activities.PUBLISHED + " INTEGER NOT NULL," +
Activities.THREAD_PUBLISHED + " INTEGER NOT NULL," +
Activities.TITLE + " TEXT NOT NULL," +
Activities.SUMMARY + " TEXT," +
Activities.LINK + " TEXT, " +
Activities.THUMBNAIL + " BLOB" +
");");

CalendarProvider

CalendarProvider를 사용할 때 AndroidManifest.xml에 다음을 등록

 android:name="android.permission.READ_CALENDAR" />
android:name="android.permission.WRITE_CALENDAR" />

  1. CalendarProviderTest.java
  2. CalendarSyncTestingBase.java
  3. DurationTest.java
  4. EventRecurrenceTest.java
  5. ICalendarTest.java
  6. RRuleTest.java
  7. RecurrenceProcessorTest.java
  8. SyncCalendarTest.java
  9. TestCalendarSyncAdapter.java
  10. VCalTest.java

CalendarProvider

  • 사용하는 Tables
    • Calendars, Events, EventsRawTimes, DeletedEvents, Instances, CalendarMetaData
    • BusyBits, Attendees, Reminders, CalendarAlerts, ExtendedProperties

CalendarProvider의 사용가능한 URI

content://calendar/instances/when/*/*
content://calendar/instances/whenbyday/*/*
content://calendar/events
content://calendar/events/#
content://calendar/calendars
content://calendar/calendars/#
content://calendar/deleted_events
content://calendar/attendees
content://calendar/attendees/#
content://calendar/reminders
content://calendar/reminders/#
content://calendar/extendedproperties
content://calendar/extendedproperties/#
content://calendar/calendar_alerts
content://calendar/calendar_alerts/#
content://calendar/calendar_alerts/by_instance
content://calendar/busybits/when/*/*

생성한 데이터베이스 테이블

Calendars

CREATE TABLE Calendars (
_id INTEGER PRIMARY KEY,
_sync_account TEXT,
_sync_account_type TEXT
_sync_id TEXT
_sync_version TEXT
_sync_time TEXT, -- UTC
_sync_local_id INTEGER,
_sync_dirty INTEGER,
_sync_mark INTEGER, -- Used to filter out new rows
url TEXT,
name TEXT,
displayName TEXT,
hidden INTEGER NOT NULL DEFAULT 0,
color INTEGER,
access_level INTEGER,
selected INTEGER NOT NULL DEFAULT 1,
sync_events INTEGER NOT NULL DEFAULT 0,
location TEXT,
timezone TEXT,
ownerAccount TEXT
);

Events

CREATE TABLE Events (
_id INTEGER PRIMARY KEY,
_sync_account TEXT,
_sync_account_type TEXT,
_sync_id TEXT,
_sync_version TEXT,
_sync_time TEXT,
_sync_local_id INTEGER,
_sync_dirty INTEGER,
_sync_mark INTEGER, -- To filter out new rows
calendar_id INTEGER NOT NULL,
htmlUri TEXT,
title TEXT,
eventLocation TEXT,
description TEXT,
eventStatus INTEGER,
selfAttendeeStatus INTEGER NOT NULL DEFAULT 0,
commentsUri TEXT,
dtstart INTEGER, -- millis since epoch
dtend INTEGER, -- millis since epoch
eventTimezone TEXT, -- timezone for event
duration TEXT,
allDay INTEGER NOT NULL DEFAULT 0,
visibility INTEGER NOT NULL DEFAULT 0,
transparency INTEGER NOT NULL DEFAULT 0,
hasAlarm INTEGER NOT NULL DEFAULT 0,
hasExtendedProperties INTEGER NOT NULL DEFAULT 0,
rrule TEXT,
rdate TEXT,
exrule TEXT,
exdate TEXT,
originalEvent TEXT, -- _sync_id of recurring event
originalInstanceTime INTEGER, -- millis since epoch
originalAllDay INTEGER,
lastDate INTEGER, -- millis since epoch
hasAttendeeData INTEGER NOT NULL DEFAULT 0,
guestsCanModify INTEGER NOT NULL DEFAULT 0,
guestsCanInviteOthers INTEGER NOT NULL DEFAULT 1,
guestsCanSeeGuests INTEGER NOT NULL DEFAULT 1,
organizer STRING
);

EventsRawTimes

CREATE TABLE EventsRawTimes (
_id INTEGER PRIMARY KEY,
event_id INTEGER NOT NULL,
dtstart2445 TEXT,
dtend2445 TEXT,
originalInstanceTime2445 TEXT,
lastDate2445 TEXT,
UNIQUE (event_id)
);

DeletedEvents

CREATE TABLE DeletedEvents (
_sync_id TEXT,
_sync_version TEXT,
_sync_account TEXT,
_sync_account_type TEXT,
_sync_local_id INTEGER, -- Used while syncing,
_sync_mark INTEGER, -- To filter out new rows
calendar_id INTEGER
);

Instances

CREATE TABLE Instances (
_id INTEGER PRIMARY KEY,
event_id INTEGER,
begin INTEGER, -- UTC millis
end INTEGER, -- UTC millis
startDay INTEGER, -- Julian start day
endDay INTEGER, -- Julian end day
startMinute INTEGER, -- minutes from midnight
endMinute INTEGER, -- minutes from midnight
UNIQUE (event_id, begin, end)
);

CalendarMetaData

CREATE TABLE CalendarMetaData (
_id INTEGER PRIMARY KEY,
localTimezone TEXT,
minInstance INTEGER, -- UTC millis
maxInstance INTEGER, -- UTC millis
minBusyBits INTEGER, -- UTC millis
maxBusyBits INTEGER -- UTC millis
);

BusyBits

CREATE TABLE BusyBits(
day INTEGER PRIMARY KEY, -- the Julian day
busyBits INTEGER, -- 24 bits for 60-minute intervals
allDayCount INTEGER -- number of all-day events
);

Attendees

CREATE TABLE Attendees (
_id INTEGER PRIMARY KEY,
event_id INTEGER,
attendeeName TEXT,
attendeeEmail TEXT,
attendeeStatus INTEGER,
attendeeRelationship INTEGER,
attendeeType INTEGER
);

Reminders

CREATE TABLE Reminders (
_id INTEGER PRIMARY KEY,
event_id INTEGER,
minutes INTEGER,
method INTEGER NOT NULL DEFAULT Reminders.METHOD_DEFAULT
);

CalendarAlerts

CREATE TABLE CalendarAlerts (
_id INTEGER PRIMARY KEY,
event_id INTEGER,
begin INTEGER NOT NULL, -- UTC millis
end INTEGER NOT NULL, -- UTC millis
alarmTime INTEGER NOT NULL, -- UTC millis
creationTime INTEGER NOT NULL, -- UTC millis
receivedTime INTEGER NOT NULL, -- UTC millis
notifyTime INTEGER NOT NULL, -- UTC millis
state INTEGER NOT NULL
minutes INTEGER,
UNIQUE (alarmTime, begin, event_id)
);

ExtendedProperties

CREATE TABLE ExtendedProperties (
_id INTEGER PRIMARY KEY,
event_id INTEGER,
name TEXT,
value TEXT
);


MediaProvider

  • 사용하는 Tables
    • images, images_cleanup, thumbnails, thumbnails_cleanup, audio_meta, artists
    • albums, album_art, artist_info, album_info, artists_albums_map, audio_meta_cleanup
    • audio_genres, audio_genres_map, audio_genres_cleanup, audio_playlists, audio_playlists_map
    • audio_playlists_cleanup, albumart_cleanup1, albumart_cleanup2, video, video_cleanup


MediaProvider의 사용가능한 URI

content://media/*/images/media
content://media/*/images/media/#
content://media/*/images/thumbnails
content://media/*/images/thumbnails/#
 
content://media/*/audio/media
content://media/*/audio/media/#;
content://media/*/audio/media/#/genres
content://media/*/audio/media/#/genres/#
content://media/*/audio/media/#/playlists
content://media/*/audio/media/#/playlists/#
content://media/*/audio/genres
content://media/*/audio/genres/#
content://media/*/audio/genres/#/members
content://media/*/audio/genres/#/members/#
content://media/*/audio/playlists
content://media/*/audio/playlists/#
content://media/*/audio/playlists/#/members
content://media/*/audio/playlists/#/members/#
content://media/*/audio/artists
content://media/*/audio/artists/#
content://media/*/audio/artists/#/albums
content://media/*/audio/albums
content://media/*/audio/albums/#
content://media/*/audio/albumart
content://media/*/audio/albumart/#
content://media/*/audio/media/#/albumart
 
content://media/*/video/media
content://media/*/video/media/#
content://media/*/video/thumbnails
content://media/*/video/thumbnails/#
 
content://media/*/media_scanner
 
content://media/*
content://media"
 
/**
* @deprecated use the 'basic' or 'fancy' search Uris instead
*/
content://media/*/audio/" + SearchManager.SUGGEST_URI_PATH_QUERY, AUDIO_SEARCH_LEGACY);
content://media/*/audio/" + SearchManager.SUGGEST_URI_PATH_QUERY + "/*", AUDIO_SEARCH_LEGACY);
 
// used for search suggestions
content://media/*/audio/search/" + SearchManager.SUGGEST_URI_PATH_QUERY,
AUDIO_SEARCH_BASIC);
content://media/*/audio/search/" + SearchManager.SUGGEST_URI_PATH_QUERY + "/*", AUDIO_SEARCH_BASIC);
 
// used by the music app's search activity
content://media/*/audio/search/fancy
content://media/*/audio/search/fancy/*

TelephonyProvider

SmsProvider

SmsProvider의 사용가능한 URI

content://sms
content://sms/#
content://sms/inbox
content://sms/inbox/#
content://sms/sent
content://sms/sent/#
content://sms/draft
content://sms/draft/#
content://sms/outbox
content://sms/outbox/#
content://sms/undelivered
content://sms/failed
content://sms/failed/#
content://sms/queued
content://sms/conversations
content://sms/conversations/*
content://sms/raw
content://sms/attachments
content://sms/attachments/#
content://sms/threadID
content://sms/threadID/*
content://sms/status/#
content://sms/sr_pending
content://sms/icc
content://sms/icc/#
 
//we keep these for not breaking old applications
content://sms/sim
content://sms/sim/#

MmsProvider

MmsProvider의 사용가능한 URI

content://mms
content://mms/#
content://mms/inbox
content://mms/inbox/#
content://mms/sent
content://mms/sent/#
content://mms/drafts
content://mms/drafts/#
content://mms/outbox
content://mms/outbox/#
content://mms/part
content://mms/#/part
content://mms/part/#
content://mms/#/addr
content://mms/rate
content://mms/report-status/#
content://mms/report-request/#
content://mms/drm
content://mms/drm/#
content://mms/threads
content://mms/scrapSpace

TelephonyProvider

TelephonyProvider의 사용가능한 URI

content://telephony/carriers
content://telephony/carriers/current
content://telephony/carriers/#
content://telephony/carriers/restore
content://telephony/carriers/preferapn

MmsSmsProvider

MmsSmsProvider의 사용가능한 URI

  • AUTHORITY = "mms-sms"
content://mms-sms/conversations
content://mms-sms/complete-conversations
 
// In these patterns, "#" is the thread ID.
content://mms-sms/conversations/#
content://mms-sms/conversations/#/recipients
 
content://mms-sms/conversations/#/subject
 
// URI for deleting obsolete threads.
content://mms-sms/conversations/obsolete", URI_OBSOLETE_THREADS);
content://mms-sms/messages/byphone/*
 
// In this pattern, two query parameter names are expected:
// "subject" and "recipient." Multiple "recipient" parameters
// may be present.
content://mms-sms/threadID
 
// Use this pattern to query the canonical address by given ID.
content://mms-sms/canonical-address/#
 
// Use this pattern to query all canonical addresses.
content://mms-sms/canonical-addresses
content://mms-sms/search
 
// In this pattern, two query parameters may be supplied:
// "protocol" and "message." For example:
// content://mms-sms/pending?
// -> Return all pending messages;
// content://mms-sms/pending?protocol=sms
// -> Only return pending SMs;
// content://mms-sms/pending?protocol=mms&message=1
// -> Return the the pending MM which ID equals '1'.
//
content://mms-sms/pending
 
// Use this pattern to get a list of undelivered messages.
content://mms-sms/undelivered
 
// Use this pattern to see what delivery status reports (for
// both MMS and SMS) have not been delivered to the user.
content://mms-sms/notifications
content://mms-sms/draft
content://mms-sms/locked
content://mms-sms/locked/#
阅读(5032) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~