diff options
-rw-r--r-- | AndroidManifest.xml | 3 | ||||
-rw-r--r-- | src/com/android/providers/contacts/ContactsProvider2.java | 14 |
2 files changed, 17 insertions, 0 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 28559c4..aae425c 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -46,6 +46,9 @@ <path-permission android:pathPrefix="/data_enterprise" android:readPermission="android.permission.INTERACT_ACROSS_USERS" /> + <path-permission + android:pathPattern="/raw_contact_entities_corp" + android:readPermission="android.permission.INTERACT_ACROSS_USERS" /> <grant-uri-permission android:pathPattern=".*" /> </provider> diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java index 2c58f38..4abf9ae 100644 --- a/src/com/android/providers/contacts/ContactsProvider2.java +++ b/src/com/android/providers/contacts/ContactsProvider2.java @@ -368,6 +368,7 @@ public class ContactsProvider2 extends AbstractContactsProvider private static final int SEARCH_SHORTCUT = 12002; private static final int RAW_CONTACT_ENTITIES = 15001; + private static final int RAW_CONTACT_ENTITIES_CORP = 15002; private static final int PROVIDER_STATUS = 16001; @@ -1199,6 +1200,7 @@ public class ContactsProvider2 extends AbstractContactsProvider RAW_CONTACTS_ID_STREAM_ITEMS_ID); matcher.addURI(ContactsContract.AUTHORITY, "raw_contact_entities", RAW_CONTACT_ENTITIES); + matcher.addURI(ContactsContract.AUTHORITY, "raw_contact_entities_corp", RAW_CONTACT_ENTITIES_CORP); matcher.addURI(ContactsContract.AUTHORITY, "data", DATA); matcher.addURI(ContactsContract.AUTHORITY, "data/#", DATA_ID); @@ -6376,6 +6378,18 @@ public class ContactsProvider2 extends AbstractContactsProvider setTablesAndProjectionMapForRawEntities(qb, uri); break; } + case RAW_CONTACT_ENTITIES_CORP: { + final int corpUserId = UserUtils.getCorpUserId(getContext()); + if (corpUserId < 0) { + // No Corp user or policy not allowed, return empty cursor + final String[] outputProjection = (projection != null) ? projection + : sRawEntityProjectionMap.getColumnNames(); + return new MatrixCursor(outputProjection); + } + final Uri remoteUri = maybeAddUserId(RawContactsEntity.CONTENT_URI, corpUserId); + return getContext().getContentResolver().query(remoteUri, projection, selection, + selectionArgs, sortOrder); + } case RAW_CONTACT_ID_ENTITY: { long rawContactId = Long.parseLong(uri.getPathSegments().get(1)); |