कार्य प्रोफ़ाइल के संपर्क

इस डेवलपर की गाइड में बताया गया है कि संपर्क का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन को कैसे बेहतर बनाया जा सकता है वर्क प्रोफ़ाइल का डेटा मिल सकता है. अगर आपने Android के Contacts API का इस्तेमाल नहीं किया है इसके बारे में जानने के लिए, संपर्क की सेवा देने वाली कंपनी के बारे में पढ़ें को ट्रैक कर सकते हैं.

खास जानकारी

वर्क प्रोफ़ाइलों वाले डिवाइसों में संपर्क, अलग-अलग जगहों पर सेव किए जाते हैं काम और निजी प्रोफ़ाइल की डायरेक्ट्री. डिफ़ॉल्ट रूप से, जब कोई ऐप्लिकेशन पर यह काम के संपर्क नहीं दिखातीं. हालांकि, ऐप्लिकेशन ये काम कर सकता है: वर्क प्रोफ़ाइल से संपर्क जानकारी ऐक्सेस करने की अनुमति दें. उदाहरण के लिए, ऐसा ऐप्लिकेशन जो यह Google का Android संपर्क ऐप्लिकेशन है, जो निजी और खोज के नतीजों में वर्क-डायरेक्ट्री के संपर्क.

उपयोगकर्ता अक्सर अपने निजी डिवाइसों और ऐप्लिकेशन का इस्तेमाल ऑफ़िस के काम के लिए करना चाहते हैं. इस्तेमाल करके आपका ऐप्लिकेशन आपके उपयोगकर्ता के कामकाजी दिन का हिस्सा बन सकता है.

उपयोगकर्ता अनुभव

यह देखें कि आपका ऐप्लिकेशन, वर्क प्रोफ़ाइल में दी गई संपर्क जानकारी किस तरह दिखा सकता है. सबसे अच्छा तरीका, आपके ऐप्लिकेशन के टाइप और इस बात पर निर्भर करता है कि लोग किस वजह से इसका इस्तेमाल करते हैं, लेकिन इन बातों के बारे में सोचें:

  • आपके ऐप्लिकेशन में वर्क प्रोफ़ाइल के संपर्क डिफ़ॉल्ट रूप से शामिल होने चाहिए या उपयोगकर्ता को ऑप्ट-इन करना है?
  • दफ़्तर और निजी प्रोफ़ाइल संपर्कों को मिलाने या अलग करने से, उपयोगकर्ता का फ़्लो क्या है?
  • वर्क प्रोफ़ाइल के किसी संपर्क पर गलती से टैप करने से क्या होता है?
  • वर्क प्रोफ़ाइल के संपर्क नहीं होने पर, आपके ऐप्लिकेशन के इंटरफ़ेस का क्या होता है उपलब्ध है?

आपके ऐप्लिकेशन में वर्क प्रोफ़ाइल के संपर्क की जानकारी साफ़ तौर पर दी जानी चाहिए. शायद आप बैज दे पाएं आपके पास, काम के जाने-पहचाने आइकॉन का इस्तेमाल करने वाला संपर्क हो, जैसे कि ब्रीफ़केस.

सूची में खोज के नतीजे दिखाने वाला स्क्रीनशॉट
पहली इमेज. Google Contacts ऐप्लिकेशन, वर्क प्रोफ़ाइल को कैसे अलग करता है संपर्क

उदाहरण के लिए, Google संपर्क ऐप्लिकेशन (पहली इमेज में दिखाया गया) ये काम करता है: वर्क और निजी प्रोफ़ाइल संपर्कों को मिलाकर सूची बनाएं:

  1. सूची के काम और निजी सेक्शन को अलग करने के लिए सब-हेडर को शामिल करता है.
  2. ब्रीफ़केस आइकन वाले बैज वर्क संपर्क.
  3. टैप करने पर वर्क प्रोफ़ाइल में वर्क प्रोफ़ाइल खोलता है.

अगर डिवाइस का इस्तेमाल करने वाला व्यक्ति वर्क प्रोफ़ाइल बंद कर देता है, तो आपका ऐप्लिकेशन ये काम नहीं कर पाएगा वर्क प्रोफ़ाइल या संगठन के रिमोट से संपर्क जानकारी देखो संपर्क डायरेक्ट्री. वर्क-प्रोफ़ाइल संपर्कों के इस्तेमाल के आधार पर, इन संपर्कों को बिना किसी रुकावट के बाहर रखें. ऐसा नहीं करने पर, आपको यूज़र इंटरफ़ेस बंद करना पड़ सकता है नियंत्रण.

अनुमतियां

अगर आपका ऐप्लिकेशन पहले से ही उपयोगकर्ता के संपर्कों के साथ काम कर रहा है, तो आपको उनकी संपर्क सूची में READ_CONTACTS (या शायद WRITE_CONTACTS) अनुमति ऐप्लिकेशन मेनिफ़ेस्ट फ़ाइल में सेव किया गया है. क्योंकि एक ही व्यक्ति निजी प्रोफ़ाइल और काम का इस्तेमाल करता है है, तो आपको काम के संपर्क का डेटा ऐक्सेस करने के लिए और अनुमति की ज़रूरत नहीं पड़ेगी प्रोफ़ाइल.

आईटी एडमिन ये काम कर सकता है: ब्लॉक करें निजी प्रोफ़ाइल के साथ संपर्क जानकारी शेयर करने वाली वर्क प्रोफ़ाइल. अगर कोई आईटी admin पहुंच रोक देता है, आपकी संपर्क खोजें खाली नतीजों के तौर पर दिखाई जाती हैं. आपका अगर उपयोगकर्ता काम बंद कर देता है, तो ऐप्लिकेशन को खास गड़बड़ियों को हैंडल करने की ज़रूरत नहीं पड़ेगी प्रोफ़ाइल. डायरेक्ट्री कॉन्टेंट देने वाला, पब्लिशर को दी जाने वाली उपयोगकर्ता की वर्क संपर्क डायरेक्ट्री (डायरेक्ट्री सेक्शन देखें). इन अनुमतियों की जांच करने के लिए, डेवलपमेंट और टेस्टिंग पेज पर जाएं सेक्शन में जाएं.

संपर्क खोजें

आप उन्हीं एपीआई और प्रक्रियाओं का इस्तेमाल करके वर्क प्रोफ़ाइल से संपर्क पा सकते हैं जो आपका ऐप्लिकेशन निजी प्रोफ़ाइल में संपर्क जोड़ने के लिए इसका इस्तेमाल करता है. इसके लिए एंटरप्राइज़ यूआरआई contacts, Android 7.0 (एपीआई लेवल 24) या उसके बाद वाले वर्शन में काम करता है. आपको यह बनाना होगा तो यूआरआई में ये बदलाव किए जाएंगे:

  1. कॉन्टेंट देने वाले के यूआरआई को इस पर सेट करें Contacts.ENTERPRISE_CONTENT_FILTER_URI और संपर्क स्ट्रिंग के रूप में संपर्क का नाम दें.
  2. खोजने के लिए, संपर्क डायरेक्ट्री सेट करें. उदाहरण के लिए, ENTERPRISE_DEFAULT को काम में मौजूद संपर्क मिलते हैं के स्थानीय स्टोर पर जाएं.

यूआरआई बदलने की प्रक्रिया सामग्री देने वाली किसी भी तकनीक के साथ काम करती है, जैसे कि CursorLoader—यूज़र इंटरफ़ेस में संपर्क डेटा लोड करने के लिए सबसे सही है, क्योंकि डेटा का ऐक्सेस वर्कर थ्रेड पर होता है. इसे आसानी से समझने के लिए, इस गाइड कॉल ContentResolver.query(). यहाँ बताया गया है कि वर्क प्रोफ़ाइल की लोकल संपर्क डायरेक्ट्री में मौजूद संपर्क:

Kotlin

// First confirm the device user has given permission for the personal profile.
// There isn't a separate work permission, but an IT admin can block access.
val readContactsPermission =
  ContextCompat.checkSelfPermission(getBaseContext(), Manifest.permission.READ_CONTACTS)
if (readContactsPermission != PackageManager.PERMISSION_GRANTED) {
  return
}

// Fetch Jackie, James, & Jason (and anyone else whose names begin with "ja").
val nameQuery = Uri.encode("ja")

// Build the URI to look up work profile contacts whose name matches. Query
// the default work profile directory which is the locally-stored contacts.
val contentFilterUri =
  ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI
    .buildUpon()
    .appendPath(nameQuery)
    .appendQueryParameter(
      ContactsContract.DIRECTORY_PARAM_KEY,
      ContactsContract.Directory.ENTERPRISE_DEFAULT.toString()
    )
    .build()

// Query the content provider using the generated URI.
var cursor =
  getContentResolver()
    .query(
      contentFilterUri,
      arrayOf(
        ContactsContract.Contacts._ID,
        ContactsContract.Contacts.LOOKUP_KEY,
        ContactsContract.Contacts.DISPLAY_NAME_PRIMARY
      ),
      null,
      null,
      null
    )

// Print any results found using the work profile contacts' display name.
cursor?.use {
  while (it.moveToNext()) {
    Log.i(TAG, "Work profile contact: ${it.getString(2)}")
  }
}

Java

// First confirm the device user has given permission for the personal profile.
// There isn't a separate work permission, but an IT admin can block access.
int readContactsPermission = ContextCompat.checkSelfPermission(
    getBaseContext(), Manifest.permission.READ_CONTACTS);
if (readContactsPermission != PackageManager.PERMISSION_GRANTED) {
  return;
}

// Fetch Jackie, James, & Jason (and anyone else whose names begin with "ja").
String nameQuery = Uri.encode("ja");

// Build the URI to look up work profile contacts whose name matches. Query
// the default work profile directory which is the locally stored contacts.
Uri contentFilterUri = ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI
    .buildUpon()
    .appendPath(nameQuery)
    .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
        String.valueOf(ContactsContract.Directory.ENTERPRISE_DEFAULT))
    .build();

// Query the content provider using the generated URI.
Cursor cursor = getContentResolver().query(
    contentFilterUri,
    new String[] {
        ContactsContract.Contacts._ID,
        ContactsContract.Contacts.LOOKUP_KEY,
        ContactsContract.Contacts.DISPLAY_NAME_PRIMARY
    },
    null,
    null,
    null);
if (cursor == null) {
  return;
}

// Print any results found using the work profile contacts' display name.
try {
  while (cursor.moveToNext()) {
    Log.i(TAG, "Work profile contact: " + cursor.getString(2));
  }
} finally {
  cursor.close();
}

निर्देशिकाएं

कई संगठन रिमोट डायरेक्ट्री का इस्तेमाल करते हैं, जैसे कि Microsoft Exchange या LDAP, जिनमें पूरे संगठन की संपर्क जानकारी मौजूद हो. आपके ऐप्लिकेशन से मदद मिल सकती है उपयोगकर्ता अपने संगठन के साथ काम करने वाले लोगों से बातचीत और शेयर करते हैं डायरेक्ट्री. ध्यान दें कि इन डायरेक्ट्री में आम तौर पर हज़ारों संपर्क होते हैं, और उन्हें खोजने के लिए आपके ऐप्लिकेशन को एक सक्रिय नेटवर्क कनेक्शन की भी आवश्यकता होगी. Google Analytics 4 पर माइग्रेट करने के लिए, Directory कॉन्टेंट देने वाला, ताकि वे डायरेक्ट्री इस्तेमाल कर सकें: उपयोगकर्ता खाते देख सकते हैं और किसी डायरेक्ट्री के बारे में ज़्यादा जान सकते हैं.

Directory.ENTERPRISE_CONTENT_URI के बारे में क्वेरी करें निजी प्रोफ़ाइल और काम से जुड़ी डायरेक्ट्री लेने के लिए कॉन्टेंट उपलब्ध कराने वाला प्रोफ़ाइल एक साथ दिखाई गई. वर्क-प्रोफ़ाइल डायरेक्ट्री में खोज की जा सकती है: Android 7.0 (एपीआई लेवल 24) या उसके बाद का वर्शन. उपयोगकर्ता को आपका ऐप्लिकेशन अब भी कुछ देना होगा READ_CONTACTS को, संपर्क के साथ काम करने की अनुमतियां डायरेक्ट्री में जा सकते हैं.

क्योंकि Android संपर्क जानकारी को अलग-अलग प्रकार की स्थानीय और रिमोट डायरेक्ट्री. Directory क्लास में ऐसे तरीके हैं जिन्हें कॉल करके, ज़्यादा जानकारी पाई जा सकती है डायरेक्ट्री के बारे में जानकारी:

isEnterpriseDirectoryId()
इस तरीके को कॉल करके पता करें कि डायरेक्ट्री, वर्क प्रोफ़ाइल खाते से है या नहीं. याद रखें कि कॉन्टेंट उपलब्ध कराने वाला ENTERPRISE_CONTENT_URI संपर्क, निजी और वर्क प्रोफ़ाइल की डायरेक्ट्री को एक साथ शामिल करें.
isRemoteDirectoryId()
इस तरीके को कॉल करके, पता करें कि डायरेक्ट्री रिमोट है या नहीं. रिमोट डायरेक्ट्री एंटरप्राइज़ संपर्क स्टोर हो सकते हैं या उपयोगकर्ता के सोशल नेटवर्क हो सकते हैं.

नीचे दिए गए उदाहरण में, वर्क प्रोफ़ाइल फ़िल्टर करने के इन तरीकों का इस्तेमाल करने का तरीका बताया गया है डायरेक्ट्री:

Kotlin

// First, confirm the device user has given READ_CONTACTS permission.
// This permission is still needed for directory listings ...

// Query the content provider to get directories for BOTH the personal and
// work profiles.
val cursor =
  getContentResolver()
    .query(
      ContactsContract.Directory.ENTERPRISE_CONTENT_URI,
      arrayOf(ContactsContract.Directory._ID, ContactsContract.Directory.PACKAGE_NAME),
      null,
      null,
      null
    )

// Print the package name of the work profile's local or remote contact directories.
cursor?.use {
  while (it.moveToNext()) {
    val directoryId = it.getLong(0)
    if (ContactsContract.Directory.isEnterpriseDirectoryId(directoryId)) {
      Log.i(TAG, "Directory: ${it.getString(1)}")
    }
  }
}

Java

// First, confirm the device user has given READ_CONTACTS permission.
// This permission is still needed for directory listings ...

// Query the content provider to get directories for BOTH the personal and
// work profiles.
Cursor cursor = getContentResolver().query(
    ContactsContract.Directory.ENTERPRISE_CONTENT_URI,
    new String[]{
        ContactsContract.Directory._ID,
        ContactsContract.Directory.PACKAGE_NAME
    },
    null,
    null,
    null);
if (cursor == null) {
  return;
}

// Print the package name of the work profile's local or remote contact directories.
try {
  while (cursor.moveToNext()) {
    long directoryId = cursor.getLong(0);

    if (ContactsContract.Directory.isEnterpriseDirectoryId(directoryId)) {
      Log.i(TAG, "Directory: " + cursor.getString(1));
    }
  }
} finally {
  cursor.close();
}

उदाहरण में, डायरेक्ट्री के लिए आईडी और पैकेज का नाम फ़ेच किया जाता है. उपयोगकर्ता को दिखाने के लिए एक ऐसा इंटरफ़ेस है जो संपर्क-डायरेक्ट्री का सोर्स चुनने में उपयोगकर्ताओं की मदद करता है. इसके लिए आपको डायरेक्ट्री के बारे में ज़्यादा जानकारी पाएं. ऐसे दूसरे मेटाडेटा फ़ील्ड देखने के लिए जो उपलब्ध हो सकते हैं, तो Directory क्लास का रेफ़रंस पढ़ें.

फ़ोन लुकअप

ऐप्लिकेशन, क्वेरी कर सकते हैं बेहतर तरीके से PhoneLookup.CONTENT_FILTER_URI किसी टेलीफ़ोन नंबर के लिए संपर्क डेटा खोजना. आप इनसे लुकअप नतीजे पा सकते हैं अगर आप इस यूआरआई को इससे बदलते हैं, तो निजी और वर्क प्रोफ़ाइल से संपर्क करने वाली कंपनी, दोनों PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI. यह वर्क-प्रोफ़ाइल कॉन्टेंट यूआरआई Android 5.0 (एपीआई लेवल 21) में उपलब्ध है या उच्च.

नीचे दिए गए उदाहरण में, वर्क-प्रोफ़ाइल कॉन्टेंट के यूआरआई को क्वेरी करने वाला ऐप्लिकेशन दिखाया गया है इनकमिंग कॉल के लिए यूज़र इंटरफ़ेस कॉन्फ़िगर करें:

Kotlin

fun onCreateIncomingConnection(
  connectionManagerPhoneAccount: PhoneAccountHandle,
  request: ConnectionRequest
): Connection {
  var request = request
  // Get the telephone number from the incoming request URI.
  val phoneNumber = this.extractTelephoneNumber(request.address)

  var displayName = "Unknown caller"
  var isCallerInWorkProfile = false

  // Look up contact details for the caller in the personal and work profiles.
  val lookupUri =
    Uri.withAppendedPath(
      ContactsContract.PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
      Uri.encode(phoneNumber)
    )
  val cursor =
    getContentResolver()
      .query(
        lookupUri,
        arrayOf(
          ContactsContract.PhoneLookup._ID,
          ContactsContract.PhoneLookup.DISPLAY_NAME,
          ContactsContract.PhoneLookup.CUSTOM_RINGTONE
        ),
        null,
        null,
        null
      )

  // Use the first contact found and check if they're from the work profile.
  cursor?.use {
    if (it.moveToFirst() == true) {
      displayName = it.getString(1)
      isCallerInWorkProfile = ContactsContract.Contacts.isEnterpriseContactId(it.getLong(0))
    }
  }

  // Return a configured connection object for the incoming call.
  val connection = MyAudioConnection()
  connection.setCallerDisplayName(displayName, TelecomManager.PRESENTATION_ALLOWED)

  // Our app's activity uses this value to decide whether to show a work badge.
  connection.setIsCallerInWorkProfile(isCallerInWorkProfile)

  // Configure the connection further ...
  return connection
}

Java

public Connection onCreateIncomingConnection (
    PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) {
  // Get the telephone number from the incoming request URI.
  String phoneNumber = this.extractTelephoneNumber(request.getAddress());

  String displayName = "Unknown caller";
  boolean isCallerInWorkProfile = false;

  // Look up contact details for the caller in the personal and work profiles.
  Uri lookupUri = Uri.withAppendedPath(
      ContactsContract.PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
      Uri.encode(phoneNumber));
  Cursor cursor = getContentResolver().query(
      lookupUri,
      new String[]{
          ContactsContract.PhoneLookup._ID,
          ContactsContract.PhoneLookup.DISPLAY_NAME,
          ContactsContract.PhoneLookup.CUSTOM_RINGTONE
      },
      null,
      null,
      null);

  // Use the first contact found and check if they're from the work profile.
  if (cursor != null) {
    try {
      if (cursor.moveToFirst() == true) {
        displayName = cursor.getString(1);
        isCallerInWorkProfile =
            ContactsContract.Contacts.isEnterpriseContactId(cursor.getLong(0));
      }
    } finally {
      cursor.close();
    }
  }

  // Return a configured connection object for the incoming call.
  MyConnection connection = new MyConnection();
  connection.setCallerDisplayName(displayName, TelecomManager.PRESENTATION_ALLOWED);

  // Our app's activity uses this value to decide whether to show a work badge.
  connection.setIsCallerInWorkProfile(isCallerInWorkProfile);

  // Configure the connection further ...
  return connection;
}

ईमेल लुकअप

आपका ऐप्लिकेशन, क्वेरी करके किसी ईमेल पते के लिए निजी या ऑफ़िस के संपर्क का डेटा हासिल कर सकता है Email.ENTERPRISE_CONTENT_LOOKUP_URI. इस यूआरएल पर क्वेरी करने से, सबसे पहले आपके निजी संपर्कों में से पूरी तरह मैच होने वाली जानकारी खोजी जाती है. अगर आपने सेवा देने वाली कंपनी किसी निजी संपर्क से मैच नहीं करती है, तो सेवा देने वाली कंपनी खोज करती है मैच के लिए कार्यालय के संपर्क. यह यूआरआई Android 6.0 (एपीआई लेवल 23) में उपलब्ध है या उससे ज़्यादा.

किसी ईमेल पते की संपर्क जानकारी खोजने का तरीका यहां बताया गया है:

Kotlin

// Build the URI to look up contacts from the personal and work profiles that
// are an exact (case-insensitive) match for the email address.
val emailAddress = "somebody@example.com"
val contentFilterUri =
  Uri.withAppendedPath(
    ContactsContract.CommonDataKinds.Email.ENTERPRISE_CONTENT_LOOKUP_URI,
    Uri.encode(emailAddress)
  )

// Query the content provider to first try to match personal contacts and,
// if none are found, then try to match the work contacts.
val cursor =
  contentResolver.query(
    contentFilterUri,
    arrayOf(
      ContactsContract.CommonDataKinds.Email.CONTACT_ID,
      ContactsContract.CommonDataKinds.Email.ADDRESS,
      ContactsContract.Contacts.DISPLAY_NAME
    ),
    null,
    null,
    null
  )
    ?: return

// Print the name of the matching contact. If we want to work-badge contacts,
// we can call ContactsContract.Contacts.isEnterpriseContactId() with the ID.
cursor.use {
  while (it.moveToNext()) {
    Log.i(TAG, "Matching contact: ${it.getString(2)}")
  }
}

Java

// Build the URI to look up contacts from the personal and work profiles that
// are an exact (case-insensitive) match for the email address.
String emailAddress = "somebody@example.com";
Uri contentFilterUri = Uri.withAppendedPath(
    ContactsContract.CommonDataKinds.Email.ENTERPRISE_CONTENT_LOOKUP_URI,
    Uri.encode(emailAddress));

// Query the content provider to first try to match personal contacts and,
// if none are found, then try to match the work contacts.
Cursor cursor = getContentResolver().query(
    contentFilterUri,
    new String[]{
        ContactsContract.CommonDataKinds.Email.CONTACT_ID,
        ContactsContract.CommonDataKinds.Email.ADDRESS,
        ContactsContract.Contacts.DISPLAY_NAME
    },
    null,
    null,
    null);
if (cursor == null) {
  return;
}

// Print the name of the matching contact. If we want to work-badge contacts,
// we can call ContactsContract.Contacts.isEnterpriseContactId() with the ID.
try {
  while (cursor.moveToNext()) {
    Log.i(TAG, "Matching contact: " + cursor.getString(2));
  }
} finally {
  cursor.close();
}

कार्यालय का संपर्क दिखाएं

अगर निजी प्रोफ़ाइल का इस्तेमाल किया जा रहा है, तो ऐप्लिकेशन की वर्क प्रोफ़ाइल में संपर्क की जानकारी वाला कार्ड दिखाया जा सकता है. कॉल करें ContactsContract.QuickContact.showQuickContact() इंच वर्क प्रोफ़ाइल में संपर्क ऐप्लिकेशन को लॉन्च करने और दिखाने के लिए, Android 5.0 या उसके बाद का वर्शन होना चाहिए संपर्क का कार्ड.

वर्क प्रोफ़ाइल के लिए सही यूआरआई जनरेट करने के लिए, आपको कॉल करना होगा ContactsContract.Contacts.getLookupUri() होगा और संपर्क आईडी और लुकअप कुंजी. नीचे दिए गए उदाहरण में बताया गया है कि आपको यूआरआई कैसे मिल सकता है और फिर कार्ड दिखाएं:

Kotlin

// Query the content provider using the ENTERPRISE_CONTENT_FILTER_URI address.
// We use the _ID and LOOKUP_KEY columns to generate a work-profile URI.
val cursor =
  getContentResolver()
    .query(
      contentFilterUri,
      arrayOf(ContactsContract.Contacts._ID, ContactsContract.Contacts.LOOKUP_KEY),
      null,
      null
    )

// Show the contact details card in the work profile's Contacts app. The URI
// must be created with getLookupUri().
cursor?.use {
  if (it.moveToFirst() == true) {
    val uri = ContactsContract.Contacts.getLookupUri(it.getLong(0), it.getString(1))
    ContactsContract.QuickContact.showQuickContact(
      activity,
      Rect(20, 20, 100, 100),
      uri,
      ContactsContract.QuickContact.MODE_LARGE,
      null
    )
  }
}

Java

// Query the content provider using the ENTERPRISE_CONTENT_FILTER_URI address.
// We use the _ID and LOOKUP_KEY columns to generate a work-profile URI.
Cursor cursor = getContentResolver().query(
    contentFilterUri,
    new String[] {
        ContactsContract.Contacts._ID,
        ContactsContract.Contacts.LOOKUP_KEY,
    },
    null,
    null,
    null);
if (cursor == null) {
  return;
}

// Show the contact details card in the work profile's Contacts app. The URI
// must be created with getLookupUri().
try {
  if (cursor.moveToFirst() == true) {
    Uri uri = ContactsContract.Contacts.getLookupUri(
        cursor.getLong(0), cursor.getString(1));
    ContactsContract.QuickContact.showQuickContact(
        getActivity(),
        new Rect(20, 20, 100, 100),
        uri,
        ContactsContract.QuickContact.MODE_LARGE,
        null);
  }
} finally {
  cursor.close();
}

उपलब्धता

इस टेबल में बताया गया है कि वर्क प्रोफ़ाइल के साथ Android के कौनसे वर्शन काम करते हैं निजी प्रोफ़ाइल में संपर्क डेटा:

Android वर्शन सहायता
5.0 (एपीआई लेवल 21) PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI का इस्तेमाल करके, ऑफ़िस के फ़ोन नंबर वाले फ़ोन नंबर खोजें.
6.0 (एपीआई लेवल 23) Email.ENTERPRISE_CONTENT_LOOKUP_URI का इस्तेमाल करके, ऑफ़िस के ईमेल पतों के लिए ऑफ़िस के संपर्क नाम खोजें.
7.0 (एपीआई लेवल 24) Contacts.ENTERPRISE_CONTENT_FILTER_URI का इस्तेमाल करके वर्क डायरेक्ट्री से वर्क संपर्क के नाम खोजें.
Directory.ENTERPRISE_CONTENT_URI का इस्तेमाल करके वर्क और निजी प्रोफ़ाइल की सभी डायरेक्ट्री की सूची बनाएं.

डेवलपमेंट और टेस्टिंग

वर्क प्रोफ़ाइल बनाने के लिए, यह तरीका अपनाएं:

  1. हमारा Test DPC ऐप्लिकेशन इंस्टॉल करें.
  2. Set up Test DPC ऐप्लिकेशन ऐप्लिकेशन खोलें (न कि Test DPC ऐप्लिकेशन का आइकॉन).
  3. मैनेज की जा रही प्रोफ़ाइल सेट अप करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.
  4. वर्क प्रोफ़ाइल में, संपर्क ऐप्लिकेशन खोलें और सैंपल के तौर पर दिए गए कुछ संपर्क जोड़ें.

अगर कोई आईटी एडमिन, वर्क प्रोफ़ाइल में सेव किए गए संपर्कों के ऐक्सेस पर रोक लगा रहा है, तो उसे सिम्युलेट करने के लिए, यह तरीका अपनाएं:

  1. वर्क प्रोफ़ाइल में, Test DPC ऐप्लिकेशन खोलें.
  2. क्रॉस-प्रोफ़ाइल संपर्क खोज बंद करें सेटिंग खोजें या क्रॉस-प्रोफ़ाइल कॉलर आईडी बंद करें.
  3. सेटिंग को चालू करें.

वर्क प्रोफ़ाइल के साथ अपने ऐप्लिकेशन की जांच करने के बारे में ज़्यादा जानने के लिए, वर्क प्रोफ़ाइल के साथ काम करता है या नहीं.

अन्य संसाधन

संपर्कों या वर्क प्रोफ़ाइल के बारे में ज़्यादा जानने के लिए, इन संसाधनों को देखें: