কাজের প্রোফাইল পরিচিতি

এই বিকাশকারীর নির্দেশিকা ব্যাখ্যা করে কিভাবে আপনি কাজের প্রোফাইল থেকে যোগাযোগের ডেটা ব্যবহার করতে আপনার অ্যাপটিকে উন্নত করতে পারেন৷ আপনি যদি আগে Android-এর পরিচিতি API ব্যবহার না করে থাকেন, তাহলে API-এর সাথে নিজেকে পরিচিত করতে পরিচিতি প্রদানকারী পড়ুন।

ওভারভিউ

কাজের প্রোফাইল সহ ডিভাইসগুলি কাজের এবং ব্যক্তিগত প্রোফাইলের জন্য আলাদা স্থানীয় ডিরেক্টরিতে পরিচিতিগুলি সঞ্চয় করে৷ ডিফল্টরূপে, যখন একটি অ্যাপ ব্যক্তিগত প্রোফাইলে চলে, এটি কাজের পরিচিতিগুলি প্রদর্শন করে না। যাইহোক, একটি অ্যাপ কাজের প্রোফাইল থেকে যোগাযোগের তথ্য অ্যাক্সেস করতে পারে। উদাহরণস্বরূপ, একটি অ্যাপ যা এটি করে তা হল Google এর Android পরিচিতি অ্যাপ যা অনুসন্ধান ফলাফলে ব্যক্তিগত এবং কাজের-ডিরেক্টরি পরিচিতি উভয়ই দেখায়।

ব্যবহারকারীরা প্রায়ই কাজের জন্য তাদের ব্যক্তিগত ডিভাইস এবং অ্যাপ ব্যবহার করতে চান। কাজের-প্রোফাইল পরিচিতিগুলি ব্যবহার করে, আপনার অ্যাপটি আপনার ব্যবহারকারীর কাজের দিনের অংশ হয়ে উঠতে পারে।

ব্যবহারকারীর অভিজ্ঞতা

আপনার অ্যাপ কীভাবে কাজের প্রোফাইল থেকে যোগাযোগের তথ্য উপস্থাপন করতে পারে তা বিবেচনা করুন। সর্বোত্তম পদ্ধতিটি আপনার অ্যাপের প্রকৃতি এবং লোকেরা এটি ব্যবহার করার কারণের উপর নির্ভর করে তবে নিম্নলিখিতগুলি সম্পর্কে চিন্তা করুন:

  • আপনার অ্যাপে কি ডিফল্টরূপে কাজের প্রোফাইল পরিচিতি অন্তর্ভুক্ত করা উচিত নাকি ব্যবহারকারীর অপ্ট-ইন করা উচিত?
  • কিভাবে কাজ এবং ব্যক্তিগত প্রোফাইল পরিচিতি মিশ্রিত করা বা আলাদা করা ব্যবহারকারীর প্রবাহকে প্রভাবিত করবে?
  • ভুলবশত একটি কাজের প্রোফাইল পরিচিতি ট্যাপ করার প্রভাব কি?
  • কাজের প্রোফাইল পরিচিতিগুলি উপলব্ধ না হলে আপনার অ্যাপের ইন্টারফেসের কী হবে?

আপনার অ্যাপটি স্পষ্টভাবে একটি কাজের প্রোফাইল পরিচিতি নির্দেশ করবে। সম্ভবত আপনি একটি পরিচিত কাজের আইকন ব্যবহার করে পরিচিতি ব্যাজ করতে পারেন—যেমন একটি ব্রিফকেস৷

স্ক্রিনশট একটি তালিকায় অনুসন্ধান ফলাফল দেখাচ্ছে
চিত্র 1. Google পরিচিতি অ্যাপ কীভাবে কাজের প্রোফাইল পরিচিতিগুলিকে আলাদা করে

উদাহরণ হিসাবে, Google পরিচিতি অ্যাপ (চিত্র 1-এ দেখানো হয়েছে) কাজ এবং ব্যক্তিগত প্রোফাইল পরিচিতির মিশ্রণের তালিকা করতে নিম্নলিখিতগুলি করে:

  1. তালিকার কাজ এবং ব্যক্তিগত বিভাগগুলিকে পৃথক করার জন্য একটি উপশিরোনাম সন্নিবেশ করান।
  2. ব্যাজ একটি ব্রিফকেস আইকন সহ পরিচিতি কাজ করে।
  3. ট্যাপ করা হলে কাজের প্রোফাইলে একটি কাজের পরিচিতি খোলে।

ডিভাইসটি ব্যবহার করা ব্যক্তি যদি কাজের প্রোফাইলটি বন্ধ করে দেন, তাহলে আপনার অ্যাপটি কাজের প্রোফাইল বা প্রতিষ্ঠানের দূরবর্তী পরিচিতি ডিরেক্টরি থেকে যোগাযোগের তথ্য দেখতে সক্ষম হবে না। আপনি কীভাবে কাজের-প্রোফাইল পরিচিতিগুলি ব্যবহার করেন তার উপর নির্ভর করে, আপনি নীরবে এই পরিচিতিগুলি ছেড়ে দিতে পারেন বা আপনাকে ব্যবহারকারীর ইন্টারফেস নিয়ন্ত্রণগুলি অক্ষম করতে হতে পারে৷

অনুমতি

যদি আপনার অ্যাপ ইতিমধ্যেই ব্যবহারকারীর পরিচিতিগুলির সাথে কাজ করে, তাহলে আপনার কাছে তাদের READ_CONTACTS (বা সম্ভবত WRITE_CONTACTS ) অনুমতি থাকবে যা আপনি আপনার অ্যাপ ম্যানিফেস্ট ফাইলে অনুরোধ করেছেন৷ যেহেতু একই ব্যক্তি ব্যক্তিগত প্রোফাইল এবং কাজের প্রোফাইল ব্যবহার করেন, তাই কাজের প্রোফাইল থেকে যোগাযোগের ডেটা অ্যাক্সেস করার জন্য আপনার আর অনুমতির প্রয়োজন নেই৷

একজন আইটি প্রশাসক ব্যক্তিগত প্রোফাইলের সাথে যোগাযোগের তথ্য শেয়ার করা কাজের প্রোফাইল ব্লক করতে পারেন। যদি কোনও আইটি অ্যাডমিন অ্যাক্সেস ব্লক করে, আপনার যোগাযোগের অনুসন্ধানগুলি খালি ফলাফল হিসাবে ফেরত দেওয়া হয়। ব্যবহারকারী যদি কাজের প্রোফাইলটি বন্ধ করে দেন তবে আপনার অ্যাপের নির্দিষ্ট ত্রুটিগুলি পরিচালনা করার প্রয়োজন নেই৷ ডিরেক্টরি বিষয়বস্তু প্রদানকারী ব্যবহারকারীর কাজের যোগাযোগ ডিরেক্টরি সম্পর্কে তথ্য ফেরত দিতে থাকে ( ডিরেক্টরিজ বিভাগটি দেখুন)। এই অনুমতি পরীক্ষা করতে, উন্নয়ন এবং পরীক্ষা বিভাগ দেখুন.

যোগাযোগ অনুসন্ধান

আপনি ব্যক্তিগত প্রোফাইলে পরিচিতি পেতে আপনার অ্যাপ ব্যবহার করে একই API এবং প্রক্রিয়া ব্যবহার করে কাজের প্রোফাইল থেকে পরিচিতি পেতে পারেন। পরিচিতিগুলির জন্য এন্টারপ্রাইজ URI Android 7.0 (API স্তর 24) বা উচ্চতর সংস্করণে সমর্থিত। আপনাকে URI-তে নিম্নলিখিত সমন্বয়গুলি করতে হবে:

  1. কন্টেন্ট প্রদানকারী URI কে Contacts.ENTERPRISE_CONTENT_FILTER_URI এ সেট করুন এবং ক্যোয়ারী স্ট্রিং হিসাবে পরিচিতির নাম সরবরাহ করুন।
  2. অনুসন্ধান করার জন্য একটি পরিচিতি ডিরেক্টরি সেট করুন। উদাহরণস্বরূপ, ENTERPRISE_DEFAULT কাজের প্রোফাইলের স্থানীয় দোকানে পরিচিতিগুলি খুঁজে পায়৷

URI পরিবর্তন করা যেকোন বিষয়বস্তু প্রদানকারী পদ্ধতির সাথে কাজ করে যেমন একটি CursorLoader — ব্যবহারকারীর ইন্টারফেসে যোগাযোগের ডেটা লোড করার জন্য আদর্শ কারণ ডেটা অ্যাক্সেস একজন কর্মী থ্রেডে ঘটে। সরলতার জন্য, এই গাইডের উদাহরণগুলি ContentResolver.query() কল করে। কাজের প্রোফাইলের স্থানীয় পরিচিতি ডিরেক্টরিতে আপনি কীভাবে পরিচিতিগুলি খুঁজে পেতে পারেন তা এখানে:

কোটলিন

// 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)}")
  }
}

জাভা

// 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();
}

ডিরেক্টরি

অনেক প্রতিষ্ঠান দূরবর্তী ডিরেক্টরি ব্যবহার করে, যেমন মাইক্রোসফ্ট এক্সচেঞ্জ বা LDAP, যাতে সমগ্র সংস্থার জন্য যোগাযোগের তথ্য থাকে। আপনার অ্যাপ ব্যবহারকারীদের তাদের প্রতিষ্ঠানের ডিরেক্টরিতে পাওয়া কাজের সহকর্মীদের সাথে যোগাযোগ করতে এবং শেয়ার করতে সাহায্য করতে পারে। মনে রাখবেন যে এই ডিরেক্টরিগুলিতে সাধারণত হাজার হাজার পরিচিতি থাকে এবং সেগুলি অনুসন্ধান করার জন্য আপনার অ্যাপের একটি সক্রিয় নেটওয়ার্ক সংযোগেরও প্রয়োজন৷ ব্যবহারকারীর অ্যাকাউন্টগুলির দ্বারা ব্যবহৃত ডিরেক্টরিগুলি পেতে এবং একটি পৃথক ডিরেক্টরি সম্পর্কে আরও জানতে আপনি Directory সামগ্রী প্রদানকারী ব্যবহার করতে পারেন৷

ব্যক্তিগত প্রোফাইল এবং কাজের প্রোফাইল থেকে একসাথে ফিরে আসা ডিরেক্টরিগুলি থেকে ডিরেক্টরি পেতে Directory.ENTERPRISE_CONTENT_URI সামগ্রী প্রদানকারীকে জিজ্ঞাসা করুন৷ কাজের-প্রোফাইল ডিরেক্টরি অনুসন্ধান করা Android 7.0 (API স্তর 24) বা উচ্চতর সংস্করণে সমর্থিত। আপনার অ্যাপের এখনও ব্যবহারকারীকে তাদের পরিচিতি ডিরেক্টরিগুলির সাথে কাজ করার জন্য READ_CONTACTS অনুমতি দিতে হবে৷

যেহেতু অ্যান্ড্রয়েড বিভিন্ন ধরণের স্থানীয় এবং দূরবর্তী ডিরেক্টরিতে যোগাযোগের তথ্য সঞ্চয় করে, Directory ক্লাসে এমন পদ্ধতি রয়েছে যা আপনি একটি ডিরেক্টরি সম্পর্কে আরও জানতে কল করতে পারেন:

isEnterpriseDirectoryId()
ডিরেক্টরিটি কাজের প্রোফাইল অ্যাকাউন্ট থেকে এসেছে কিনা তা জানতে এই পদ্ধতিতে কল করুন। মনে রাখবেন যে ENTERPRISE_CONTENT_URI বিষয়বস্তু প্রদানকারী ব্যক্তিগত এবং কাজের প্রোফাইলের জন্য যোগাযোগ ডিরেক্টরিগুলি একসাথে ফেরত দেয়৷
isRemoteDirectoryId()
ডিরেক্টরিটি দূরবর্তী কিনা তা জানতে এই পদ্ধতিতে কল করুন। দূরবর্তী ডিরেক্টরিগুলি এন্টারপ্রাইজ যোগাযোগের দোকান হতে পারে বা ব্যবহারকারীর সামাজিক নেটওয়ার্ক হতে পারে৷

নিচের উদাহরণটি দেখায় কিভাবে আপনি কাজের প্রোফাইল ডিরেক্টরি ফিল্টার করতে এই পদ্ধতিগুলি ব্যবহার করতে পারেন:

কোটলিন

// 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)}")
    }
  }
}

জাভা

// 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 জিজ্ঞাসা করতে পারে৷ আপনি যদি এই URIটিকে PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI দিয়ে প্রতিস্থাপন করেন তবে আপনি ব্যক্তিগত এবং কাজের প্রোফাইল পরিচিতি প্রদানকারী উভয়ের কাছ থেকে অনুসন্ধান ফলাফল পেতে পারেন। এই ওয়ার্ক-প্রোফাইল কন্টেন্ট URI Android 5.0 (API লেভেল 21) বা উচ্চতর সংস্করণে উপলব্ধ।

নিম্নলিখিত উদাহরণে একটি অ্যাপ দেখায় যা একটি ইনকামিং কলের জন্য ইউজার ইন্টারফেস কনফিগার করার জন্য কাজের-প্রোফাইল বিষয়বস্তু URI-তে অনুসন্ধান করে:

কোটলিন

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
}

জাভা

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 । এই ইউআরএলটি জিজ্ঞাসা করলে প্রথমে সঠিক মিলের জন্য ব্যক্তিগত পরিচিতিগুলি অনুসন্ধান করে৷ যদি প্রদানকারী কোনো ব্যক্তিগত পরিচিতির সাথে মেলে না, তাহলে প্রদানকারী একটি মিলের জন্য কাজের পরিচিতি অনুসন্ধান করে। এই URI Android 6.0 (API লেভেল 23) বা উচ্চতর সংস্করণে উপলব্ধ।

এখানে আপনি কিভাবে একটি ইমেল ঠিকানার জন্য যোগাযোগের তথ্য দেখতে পারেন:

কোটলিন

// 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)}")
  }
}

জাভা

// 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();
}

একটি কাজের পরিচিতি দেখান

ব্যক্তিগত প্রোফাইলে চলমান অ্যাপগুলি কাজের প্রোফাইলে একটি পরিচিতি কার্ড দেখাতে পারে। কাজের প্রোফাইলে পরিচিতি অ্যাপ চালু করতে এবং পরিচিতির কার্ড দেখাতে Android 5.0 বা উচ্চতর সংস্করণে ContactsContract.QuickContact.showQuickContact() এ কল করুন।

কাজের প্রোফাইলের জন্য একটি সঠিক URI তৈরি করতে, আপনাকে ContactsContract.Contacts.getLookupUri() কল করতে হবে এবং একটি পরিচিতি আইডি এবং লুকআপ কী পাস করতে হবে। নিম্নলিখিত উদাহরণ দেখায় কিভাবে আপনি URI পেতে পারেন এবং তারপর কার্ডটি দেখাতে পারেন:

কোটলিন

// 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
    )
  }
}

জাভা

// 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 সংস্করণগুলি ব্যক্তিগত প্রোফাইলে কাজের প্রোফাইল যোগাযোগ ডেটা সমর্থন করে:

অ্যান্ড্রয়েড সংস্করণ সমর্থন
5.0 (API স্তর 21) PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI ব্যবহার করে টেলিফোন নম্বরগুলির জন্য কাজের যোগাযোগের নামগুলি সন্ধান করুন।
6.0 (API স্তর 23) Email.ENTERPRISE_CONTENT_LOOKUP_URI ব্যবহার করে ইমেল ঠিকানাগুলির জন্য কাজের যোগাযোগের নামগুলি সন্ধান করুন।
7.0 (API স্তর 24) Contacts.ENTERPRISE_CONTENT_FILTER_URI ব্যবহার করে কাজের ডিরেক্টরি থেকে কাজের পরিচিতির নাম জিজ্ঞাসা করুন।
Directory.ENTERPRISE_CONTENT_URI ব্যবহার করে কাজের সমস্ত ডিরেক্টরি এবং ব্যক্তিগত প্রোফাইলের তালিকা করুন।

উন্নয়ন এবং পরীক্ষা

একটি কাজের প্রোফাইল তৈরি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আমাদের টেস্ট ডিপিসি অ্যাপ ইনস্টল করুন।
  2. সেট আপ টেস্ট ডিপিসি অ্যাপ খুলুন (টেস্ট ডিপিসি অ্যাপ আইকন নয়)।
  3. একটি পরিচালিত প্রোফাইল সেট আপ করতে অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন৷
  4. কাজের প্রোফাইলে, পরিচিতি অ্যাপ খুলুন এবং কিছু নমুনা পরিচিতি যোগ করুন।

কাজের প্রোফাইল পরিচিতিতে অ্যাক্সেস ব্লক করে এমন একটি আইটি অ্যাডমিনকে অনুকরণ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. কাজের প্রোফাইলে, টেস্ট DPC অ্যাপ খুলুন।
  2. অক্ষম ক্রস-প্রোফাইল পরিচিতি অনুসন্ধান সেটিং বা ক্রস-প্রোফাইল কলার আইডি সেটিং নিষ্ক্রিয় জন্য অনুসন্ধান করুন.
  3. সেটিংটি চালু করুন।

কাজের প্রোফাইলগুলির সাথে আপনার অ্যাপ পরীক্ষা করার বিষয়ে আরও জানতে, কাজের প্রোফাইলগুলির সাথে সামঞ্জস্যের জন্য আপনার অ্যাপ পরীক্ষা করুন পড়ুন৷

অতিরিক্ত সম্পদ

পরিচিতি বা কাজের প্রোফাইল সম্পর্কে আরও জানতে, এই সংস্থানগুলি দেখুন: