এই বিকাশকারীর নির্দেশিকা ব্যাখ্যা করে যে কীভাবে আপনার ডিভাইস পলিসি কন্ট্রোলার (DPC) ডেডিকেটেড ডিভাইসে একাধিক Android ব্যবহারকারীদের পরিচালনা করতে পারে৷
ওভারভিউ
আপনার DPC একাধিক ব্যক্তিকে একটি একক ডেডিকেটেড ডিভাইস শেয়ার করতে সাহায্য করতে পারে। সম্পূর্ণরূপে পরিচালিত ডিভাইসে চলমান আপনার DPC দুই ধরনের ব্যবহারকারী তৈরি ও পরিচালনা করতে পারে:
- সেকেন্ডারি ব্যবহারকারীরা হলেন অ্যান্ড্রয়েড ব্যবহারকারীদের আলাদা অ্যাপ এবং সেশনের মধ্যে ডেটা সংরক্ষিত। আপনি একটি প্রশাসক উপাদান সঙ্গে ব্যবহারকারী পরিচালনা. এই ব্যবহারকারীরা এমন ক্ষেত্রে উপযোগী যেখানে একটি শিফটের শুরুতে একটি ডিভাইস তোলা হয়, যেমন ডেলিভারি ড্রাইভার বা নিরাপত্তা কর্মী।
- ক্ষণস্থায়ী ব্যবহারকারীরা হল সেকেন্ডারি ব্যবহারকারী যা ব্যবহারকারী থামলে, স্যুইচ দূরে চলে গেলে বা ডিভাইস রিবুট করলে সিস্টেম মুছে দেয়। এই ব্যবহারকারীরা এমন ক্ষেত্রে উপযোগী যেখানে সেশন শেষ হওয়ার পরে ডেটা মুছে ফেলা যেতে পারে, যেমন পাবলিক-অ্যাক্সেস ইন্টারনেট কিওস্ক।
আপনি ডেডিকেটেড ডিভাইস এবং সেকেন্ডারি ব্যবহারকারীদের পরিচালনা করতে আপনার বিদ্যমান DPC ব্যবহার করেন। যখন আপনি তাদের তৈরি করেন তখন আপনার DPC-তে একটি প্রশাসক উপাদান নতুন মাধ্যমিক ব্যবহারকারীদের জন্য প্রশাসক হিসাবে সেট করে।
একটি মাধ্যমিক ব্যবহারকারীর প্রশাসক অবশ্যই সম্পূর্ণরূপে পরিচালিত ডিভাইসের প্রশাসক হিসাবে একই প্যাকেজের অন্তর্গত হতে হবে৷ উন্নয়ন সহজ করার জন্য, আমরা ডিভাইস এবং সেকেন্ডারি ব্যবহারকারীদের মধ্যে একজন প্রশাসক ভাগ করার পরামর্শ দিই।
ডেডিকেটেড ডিভাইসে একাধিক ব্যবহারকারী পরিচালনার জন্য সাধারণত Android 9.0 এর প্রয়োজন হয়, তবে এই বিকাশকারীর গাইডে ব্যবহৃত কিছু পদ্ধতি Android এর পূর্ববর্তী সংস্করণগুলিতে উপলব্ধ।
মাধ্যমিক ব্যবহারকারী
সেকেন্ডারি ব্যবহারকারীরা Wifi এর সাথে সংযোগ করতে পারে এবং নতুন নেটওয়ার্ক কনফিগার করতে পারে। যাইহোক, তারা নেটওয়ার্কগুলি সম্পাদনা করতে বা মুছতে পারে না, এমনকি তাদের তৈরি করা নেটওয়ার্কগুলিও নয়৷
ব্যবহারকারী তৈরি করুন
আপনার DPC ব্যাকগ্রাউন্ডে অতিরিক্ত ব্যবহারকারী তৈরি করতে পারে এবং তারপর তাদের অগ্রভাগে স্যুইচ করতে পারে। মাধ্যমিক এবং ক্ষণস্থায়ী উভয় ব্যবহারকারীর জন্য প্রক্রিয়াটি প্রায় একই। সম্পূর্ণরূপে পরিচালিত ডিভাইস এবং সেকেন্ডারি ব্যবহারকারীর প্রশাসকদের মধ্যে নিম্নলিখিত পদক্ষেপগুলি প্রয়োগ করুন:
-
DevicePolicyManager.createAndManageUser()কে কল করুন। একটি ক্ষণস্থায়ী ব্যবহারকারী তৈরি করতে, ফ্ল্যাগ আর্গুমেন্টেMAKE_USER_EPHEMERALঅন্তর্ভুক্ত করুন। - পটভূমিতে ব্যবহারকারীকে শুরু করতে
DevicePolicyManager.startUserInBackground()এ কল করুন। ব্যবহারকারী চলতে শুরু করে কিন্তু আপনি ব্যবহারকারীকে ফোরগ্রাউন্ডে নিয়ে আসার আগে এবং ডিভাইস ব্যবহারকারী ব্যক্তিকে দেখানোর আগে সেটআপ শেষ করতে চাইবেন। - সেকেন্ডারি ব্যবহারকারীর অ্যাডমিনে, প্রাথমিক ব্যবহারকারীর সাথে নতুন ব্যবহারকারীকে সংযুক্ত করতে
DevicePolicyManager.setAffiliationIds()এ কল করুন। নিচে DPC সমন্বয় দেখুন। - সম্পূর্ণরূপে পরিচালিত ডিভাইসের অ্যাডমিনে ফিরে, ব্যবহারকারীকে অগ্রভাগে পরিবর্তন করতে
DevicePolicyManager.switchUser()এ কল করুন।
নিম্নলিখিত নমুনা দেখায় কিভাবে আপনি আপনার DPC-তে ধাপ 1 যোগ করতে পারেন:
কোটলিন
val dpm = getContext().getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager // If possible, reuse an existing affiliation ID across the // primary user and (later) the ephemeral user. val identifiers = dpm.getAffiliationIds(adminName) if (identifiers.isEmpty()) { identifiers.add(UUID.randomUUID().toString()) dpm.setAffiliationIds(adminName, identifiers) } // Pass an affiliation ID to the ephemeral user in the admin extras. val adminExtras = PersistableBundle() adminExtras.putString(AFFILIATION_ID_KEY, identifiers.first()) // Include any other config for the new user here ... // Create the ephemeral user, using this component as the admin. try { val ephemeralUser = dpm.createAndManageUser( adminName, "tmp_user", adminName, adminExtras, DevicePolicyManager.MAKE_USER_EPHEMERAL or DevicePolicyManager.SKIP_SETUP_WIZARD) } catch (e: UserManager.UserOperationException) { if (e.userOperationResult == UserManager.USER_OPERATION_ERROR_MAX_USERS) { // Find a way to free up users... } }
জাভা
DevicePolicyManager dpm = (DevicePolicyManager) getContext().getSystemService(Context.DEVICE_POLICY_SERVICE); // If possible, reuse an existing affiliation ID across the // primary user and (later) the ephemeral user. Set<String> identifiers = dpm.getAffiliationIds(adminName); if (identifiers.isEmpty()) { identifiers