ডিভাইস অ্যাডমিন ডেপ্রিকেশন। Android 9 (API লেভেল ২৮) থেকে শুরু করে, ডিভাইস অ্যাডমিন কিছু অ্যাডমিন নীতি চালু করলে, সেগুলি বাতিল হিসেবে চিহ্নিত করা হবে। আমরা সাজেস্ট করি যে আপনি এই পরিবর্তনের জন্য এখন থেকেই প্রস্তুতি শুরু করুন। আরও জানতে এবং মাইগ্রেশনের বিকল্প দেখতে, ডিভাইস অ্যাডমিন বন্ধ করা পড়ুন।
Android Device Administration API অফার করার মাধ্যমে Android-এ এন্টারপ্রাইজ অ্যাপের জন্য সহায়তা অন্তর্ভুক্ত থাকে। ডিভাইস অ্যাডমিনিস্ট্রেশন API সিস্টেম লেভেলে ডিভাইস অ্যাডমিনিস্ট্রেশন ফিচার প্রদান করে। এই API আপনাকে নিরাপত্তা-সচেতন অ্যাপ তৈরি করতে দেয় যা এন্টারপ্রাইজ সেটিংসে উপযোগী, যেখানে আইটি পেশাদারদের কর্মচারীদের ডিভাইসের উপর সমৃদ্ধ নিয়ন্ত্রণ প্রয়োজন। যেমন, Exchange-এর সহায়তা উন্নত করতে, বিল্ট-ইন Android ইমেল অ্যাপ এইসব API ব্যবহার করেছে। ইমেল অ্যাপের মাধ্যমে, Exchange অ্যাডমিনিস্ট্রেটররা পাসওয়ার্ড নীতি — যার মধ্যে বর্ণসাংখ্যিক পাসওয়ার্ড বা সংখ্যাসূচক পিন অন্তর্ভুক্ত — সব ডিভাইসে প্রয়োগ করতে পারেন। এছাড়াও, অ্যাডমিনিস্ট্রেটররা হারিয়ে যাওয়া বা চুরি হওয়া হ্যান্ডসেট রিমোট লোকেশন থেকে ওয়াইপ (অর্থাৎ, ফ্যাক্টরি ডিফল্ট সেটিংসে ফিরিয়ে আনা) করতে পারবেন। Exchange ব্যবহারকারীরা তাদের ইমেল ও ক্যালেন্ডার ডেটা সিঙ্ক করতে পারবেন।
এই ডকুমেন্টটি সেইসব ডেভেলপারদের জন্য যারা Android-চালিত ডিভাইসের জন্য এন্টারপ্রাইজ সমাধান তৈরি করতে চান। Android দ্বারা পরিচালিত কর্মচারীদের ডিভাইসের জন্য আরও শক্তিশালী নিরাপত্তা প্রদান করতে ডিভাইস অ্যাডমিনিস্ট্রেশন API দ্বারা প্রদান করা বিভিন্ন ফিচার সম্পর্কে এটি আলোচনা করে।
মনে রাখবেন Android for Work ডেপ্লয়মেন্টের জন্য Work Policy Controller তৈরি করার ব্যাপারে তথ্য পেতে, Device Policy Controller তৈরি করুন দেখুন।
হেডলেস ডিভাইস ওনার মোড
Android 14 (API লেভেল 34) হেডলেস সিস্টেম ইউজার মোড (যেসব ডিভাইসে
UserManager.isHeadlessSystemUserMode
true রিটার্ন করে)
পরিচয় করিয়ে দেয়। হেডলেস সিস্টেম ইউজার মোডে, সিস্টেম ইউজার হল
ব্যাকগ্রাউন্ড ইউজার এবং এন্ড-ইউজার ইন্টার্যাকশনের জন্য অতিরিক্ত ফোরগ্রাউন্ড ইউজারের উপর
নির্ভর করে। Android 14-এ
হেডলেস ডিভাইস মালিকের অ্যাফিলিয়েটেড মোড
চালু করা হয়েছে, যা সিস্টেম ব্যবহারকারী ছাড়া
অন্য সব অ্যাফিলিয়েটেড ব্যবহারকারীর
জন্য প্রোফাইল মালিক যোগ করে, যার উপর ডিভাইস মালিক সেট করা থাকে।
হেডলেস সিস্টেম ব্যবহারকারীর (যেখানে সিস্টেম ব্যবহারকারী
ব্যাকগ্রাউন্ডে রান করে) সাথে কনফিগার করা ডিভাইসে, শুধুমাত্র ডিভাইস নীতি যা স্কোপে গ্লোবাল
(নীতি যা সব ব্যবহারকারীর জন্য প্রযোজ্য) তা ফোরগ্রাউন্ড ব্যবহারকারী
বা ব্যবহারকারীদের জন্য প্রযোজ্য হয়। আরও বিবরণের জন্য
addUserRestriction
দেখুন।
Android ডিভাইস প্রস্তুতকারকরা source.android.com-এ প্রকাশিত নির্দেশিকা দেখতে পারেন।
ডিভাইস অ্যাডমিনিস্ট্রেশন API ওভারভিউ
ডিভাইস অ্যাডমিনিস্ট্রেশন API ব্যবহার করতে পারে এমন অ্যাপের ধরনের উদাহরণ এখানে দেওয়া হল:
- ইমেল ক্লায়েন্ট।
- নিরাপত্তা অ্যাপ যা দূর থেকে মুছে দেয়।
- ডিভাইস ম্যানেজমেন্ট পরিষেবা ও অ্যাপ।
এটি কীভাবে কাজ করে?
আপনি ডিভাইস অ্যাডমিন অ্যাপ লিখতে ডিভাইস অ্যাডমিনিস্ট্রেশন API ব্যবহার করেন যা ব্যবহারকারীরা তাদের ডিভাইসে ইনস্টল করেন। ডিভাইস অ্যাডমিন অ্যাপ কাঙ্খিত নীতি প্রয়োগ করে। এটি কীভাবে কাজ করে তা এখানে উল্লেখ করা হল:
- সিস্টেম অ্যাডমিনিস্ট্রেটর ডিভাইস অ্যাডমিন অ্যাপ লেখেন যা রিমোট/স্থানীয় ডিভাইসের নিরাপত্তা নীতি প্রয়োগ করে। এইসব নীতি অ্যাপে হার্ড-কোড করা থাকতে পারে অথবা অ্যাপটি থার্ড-পার্টি সার্ভার থেকে ডায়নামিকভাবে নীতি ফেচ করতে পারে।
- ব্যবহারকারীর ডিভাইসে অ্যাপ ইনস্টল করা আছে। Android-এ বর্তমানে
অটোমেটিক প্রভিশনিংয়ের কোনও সমাধান নেই। sysadmin যেভাবে ব্যবহারকারীদের মধ্যে অ্যাপটি
ডিস্ট্রিবিউট করতে পারেন তার কিছু উপায় নিচে দেওয়া হল:
- Google Play.
- অন্য স্টোর থেকে ইনস্টল করার সুবিধা চালু করা হচ্ছে।
- ইমেল বা ওয়েবসাইটের মতো অন্যান্য উপায়ে অ্যাপ ডিস্ট্রিবিউট করা।
- সিস্টেম ব্যবহারকারীকে ডিভাইস অ্যাডমিন অ্যাপ চালু করার জন্য প্রম্পট করে। এটি কীভাবে এবং কখন ঘটবে তা নির্ভর করে অ্যাপটি কীভাবে প্রয়োগ করা হয়েছে তার উপর।
- ব্যবহারকারী ডিভাইস অ্যাডমিন অ্যাপ চালু করলে, তাকে এর নীতি মেনে চলতে হবে। এইসব নীতি মেনে চললে সাধারণত সুবিধা পাওয়া যায়, যেমন সংবেদনশীল সিস্টেম ও ডেটা অ্যাক্সেস করা।
ব্যবহারকারী ডিভাইস অ্যাডমিন অ্যাপ চালু না করলে, এটি ডিভাইসে থেকে যায়, তবে ইনঅ্যাক্টিভ অবস্থায় থাকে। ব্যবহারকারীদের উপর এর নীতি প্রযোজ্য হবে না এবং তারা অ্যাপের কোনও সুবিধা পাবেন না—যেমন, তারা ডেটা সিঙ্ক করতে পারবেন না।
কোনও ব্যবহারকারী নীতি মেনে না চললে (যেমন, কোনও ব্যবহারকারী নির্দেশিকা লঙ্ঘন করে পাসওয়ার্ড সেট করলে), কীভাবে এটি ম্যানেজ করা হবে তা অ্যাপকেই সিদ্ধান্ত নিতে হবে। তবে, সাধারণত এর ফলে ব্যবহারকারী ডেটা সিঙ্ক করতে পারবেন না।
কোনও ডিভাইস যদি এমন কোনও সার্ভারের সাথে কানেক্ট করার চেষ্টা করে যার জন্য এমন নীতি প্রয়োজন যা ডিভাইস অ্যাডমিনিস্ট্রেশন API-তে কাজ করে না, তাহলে কানেকশন অনুমোদিত হবে না। ডিভাইস অ্যাডমিনিস্ট্রেশন API বর্তমানে আংশিক প্রভিশনিংয়ের অনুমতি দেয় না। অন্যভাবে বলতে গেলে, কোনও ডিভাইস (যেমন, লিগ্যাসি ডিভাইস) যদি উল্লেখ করা সব নীতি মেনে না চলে, তাহলে সেই ডিভাইসকে কানেক্ট করার অনুমতি দেওয়ার কোনও উপায় নেই।
কোনও ডিভাইসে একাধিক চালু করা অ্যাডমিন অ্যাপ থাকলে, সবচেয়ে কঠোর নীতি প্রয়োগ করা হয়। কোনও নির্দিষ্ট অ্যাডমিন অ্যাপকে টার্গেট করার কোনও উপায় নেই।
আগে থেকে থাকা কোনও ডিভাইস অ্যাডমিন অ্যাপ আনইনস্টল করতে, ব্যবহারকারীকে প্রথমে অ্যাডমিনিস্ট্রেটর হিসেবে অ্যাপটি আনরেজিস্টার করতে হবে।
নীতি
এন্টারপ্রাইজ সেটিংসে, প্রায়শই কর্মচারীদের ডিভাইসকে ডিভাইস ব্যবহারের ক্ষেত্রে কঠোর নীতি মেনে চলতে হয়। ডিভাইস অ্যাডমিনিস্ট্রেশন API, সারণী ১-এ তালিকাভুক্ত নীতিগুলি সমর্থন করে। মনে রাখবেন, ডিভাইস অ্যাডমিনিস্ট্রেশন API বর্তমানে শুধুমাত্র স্ক্রিন লকের জন্য পাসওয়ার্ড সমর্থন করে:
টেবিল ১. ডিভাইস অ্যাডমিনিস্ট্রেশন API দ্বারা সমর্থিত নীতি।
| নীতি | বর্ণনা |
|---|---|
| পাসওয়ার্ড চালু করা হয়েছে | ডিভাইসে পিন বা পাসওয়ার্ড চাওয়ার প্রয়োজন। |
| পাসওয়ার্ডের ন্যূনতম দৈর্ঘ্য | পাসওয়ার্ডের জন্য প্রয়োজনীয় অক্ষর সংখ্যা সেট করুন। যেমন, আপনি পিন বা পাসওয়ার্ডে অন্তত ছয়টি অক্ষর থাকার প্রয়োজনীয়তা সেট করতে পারেন। |
| বর্ণসাংখ্যিক পাসওয়ার্ড প্রয়োজন | পাসওয়ার্ডে অক্ষর ও সংখ্যার মিশ্রণ থাকতে হবে। এতে প্রতীকী অক্ষর থাকতে পারে। |
| জটিল পাসওয়ার্ড প্রয়োজন | পাসওয়ার্ডে অন্তত একটি বর্ণ, সংখ্যা এবং বিশেষ চিহ্ন থাকতেই হবে। Android 3.0-এ চালু করা হয়েছে। |
| পাসওয়ার্ডে ন্যূনতম যতগুলি অক্ষর থাকতে হবে | সব অ্যাডমিন বা নির্দিষ্ট কোনও অ্যাডমিনের পাসওয়ার্ডে ন্যূনতম যতগুলি অক্ষর থাকতে হবে। Android 3.0-এ চালু করা হয়েছে। |
| পাসওয়ার্ডে ছোট হাতের অক্ষর থাকতে হবে | সব অ্যাডমিন বা নির্দিষ্ট কোনও অ্যাডমিনের পাসওয়ার্ডে ছোট হাতের অক্ষরের ন্যূনতম সংখ্যা। Android 3.0-এ চালু করা হয়েছে। |
| পাসওয়ার্ডে ন্যূনতম যতগুলি অক্ষর থাকতে হবে, যেগুলি বর্ণ নয় | সব অ্যাডমিন বা নির্দিষ্ট কোনও অ্যাডমিনের পাসওয়ার্ডে অক্ষর নয় এমন কতগুলি অক্ষর থাকতে হবে। Android 3.0-এ চালু করা হয়েছে। |
| পাসওয়ার্ডে ন্যূনতম যতগুলি সংখ্যা থাকতে হবে | সব অ্যাডমিন বা নির্দিষ্ট কোনও অ্যাডমিনের পাসওয়ার্ডে ন্যূনতম যতগুলি সংখ্যা থাকতে হবে। Android 3.0-এ চালু করা হয়েছে। |
| পাসওয়ার্ডে প্রয়োজনীয় ন্যূনতম চিহ্ন | সব অ্যাডমিন বা নির্দিষ্ট কোনও অ্যাডমিনের পাসওয়ার্ডে প্রয়োজনীয় চিহ্নের ন্যূনতম সংখ্যা। Android 3.0-এ চালু করা হয়েছে। |
| পাসওয়ার্ডে ন্যূনতম বড় হাতের অক্ষর থাকতে হবে | সব অ্যাডমিন বা নির্দিষ্ট কোনও অ্যাডমিনের পাসওয়ার্ডে বড় হাতের অক্ষর ব্যবহারের ন্যূনতম সংখ্যা। Android 3.0-এ চালু করা হয়েছে। |
| পাসওয়ার্ডের মেয়াদ শেষ হওয়ার টাইম-আউট | পাসওয়ার্ডের মেয়াদ কখন শেষ হবে, ডিভাইস অ্যাডমিন মেয়াদ শেষ হওয়ার টাইমআউট সেট করার পর থেকে মিলিসেকেন্ডে ডেল্টা হিসেবে প্রকাশ করা হয়। Android 3.0-এ চালু করা হয়েছে। |
| পাসওয়ার্ডের ইতিহাস সংক্রান্ত বিধিনিষেধ | এই নীতি ব্যবহারকারীদের শেষ nটি অনন্য পাসওয়ার্ড পুনরায় ব্যবহার করতে বাধা দেয়।
এই নীতি সাধারণত
setPasswordExpirationTimeout()-এর সাথে ব্যবহার করা হয়, যা
ব্যবহারকারীদের নির্দিষ্ট সময় পরে পাসওয়ার্ড আপডেট করতে বাধ্য করে।
Android 3.0-এ চালু করা হয়েছে। |
| পাসওয়ার্ড দিয়ে সর্বাধিকবার চেষ্টা করা হয়েছে | ডিভাইস তার ডেটা মুছে ফেলার আগে একজন ব্যবহারকারী কতবার ভুল পাসওয়ার্ড লিখতে পারবেন তা নির্দিষ্ট করে। এছাড়াও, ডিভাইস অ্যাডমিনিস্ট্রেশন API অ্যাডমিনিস্ট্রেটরদের রিমোটলি ডিভাইসকে ফ্যাক্টরি ডিফল্টে রিসেট করার অনুমতি দেয়। ডিভাইস হারিয়ে বা চুরি হয়ে গেলে, এটি ডেটা সুরক্ষিত রাখে। |
| ইনঅ্যাক্টিভিটির সর্বাধিক সময় লক করা | ব্যবহারকারী শেষবার স্ক্রিন টাচ করার বা কোনও বোতাম প্রেস করার কতক্ষণ পরে ডিভাইস স্ক্রিন লক করবে তা সেট করে। এটি হলে, ব্যবহারকারীদের ডিভাইস ব্যবহার ও ডেটা অ্যাক্সেস করার আগে আবার পিন বা পাসওয়ার্ড লিখতে হবে। ভ্যালু ১ থেকে ৬০ মিনিটের মধ্যে হতে পারে। |
| স্টোরেজ এনক্রিপশন প্রয়োজন | ডিভাইসে কাজ করলে, স্টোরেজ এরিয়া এনক্রিপ্ট করা উচিত কিনা তা উল্লেখ করে। Android 3.0-এ চালু করা হয়েছে। |
| ক্যামেরা বন্ধ করুন | ক্যামেরা বন্ধ করা উচিত কিনা তা উল্লেখ করে। মনে রাখবেন, এটি স্থায়ীভাবে বন্ধ করতে হবে না। প্রসঙ্গ, সময় এবং আরও অনেক কিছুর উপর ভিত্তি করে ক্যামেরা ডায়নামিকভাবে চালু/বন্ধ করা যেতে পারে। Android 4.0-এ চালু করা হয়েছে। |
অন্যান্য ফিচার
উপরের সারণীতে তালিকাভুক্ত নীতিগুলি সমর্থন করার পাশাপাশি, ডিভাইস অ্যাডমিনিস্ট্রেশন API আপনাকে নিম্নলিখিতগুলি করতে দেয়:
- ব্যবহারকারীকে নতুন পাসওয়ার্ড সেট করতে প্রম্পট করুন।
- ডিভাইস সঙ্গে সঙ্গে লক করুন।
- ডিভাইসের ডেটা মুছে ফেলা (অর্থাৎ, ডিভাইসকে ফ্যাক্টরি ডিফল্টে ফিরিয়ে আনা)।
স্যাম্পেল অ্যাপ
এই পৃষ্ঠায় ব্যবহৃত উদাহরণগুলি ডিভাইস অ্যাডমিনিস্ট্রেশন API
স্যাম্পেলের উপর ভিত্তি করে তৈরি করা হয়েছে, যা SDK স্যাম্পেলে (Android SDK ম্যানেজারের মাধ্যমে
উপলভ্য) অন্তর্ভুক্ত এবং আপনার সিস্টেমে
<sdk_root>/ApiDemos/app/src/main/java/com/example/android/apis/app/DeviceAdminSample.java হিসেবে রয়েছে।
স্যাম্পেল অ্যাপটি ডিভাইস অ্যাডমিন ফিচারের একটি ডেমো অফার করে। এটি ব্যবহারকারীদের এমন একটি ইউজার ইন্টারফেস দেখায় যা তাদের ডিভাইস অ্যাডমিন অ্যাপ চালু করতে দেয়। তারা অ্যাপটি চালু করার পরে, নিম্নলিখিত কাজগুলি করতে ইউজার ইন্টারফেসের বোতামগুলি ব্যবহার করতে পারে:
- পাসওয়ার্ডের কোয়ালিটি সেট করুন।
- ব্যবহারকারীর পাসওয়ার্ডের জন্য প্রয়োজনীয়তা নির্দিষ্ট করুন, যেমন ন্যূনতম দৈর্ঘ্য, এতে অবশ্যই থাকতে হবে এমন সংখ্যাসূচক অক্ষরের ন্যূনতম সংখ্যা ইত্যাদি।
- পাসওয়ার্ড সেট করুন। পাসওয়ার্ডটি নির্দিষ্ট নীতি মেনে না চললে, সিস্টেম একটি সমস্যা দেখায়।
- ডিভাইস ওয়াইপ করার আগে (অর্থাৎ, ফ্যাক্টরি সেটিংসে ফিরিয়ে আনা) কতবার ভুল পাসওয়ার্ড লেখা যাবে তা সেট করুন।
- এখন থেকে কতক্ষণ পরে পাসওয়ার্ডের মেয়াদ শেষ হবে তা সেট করুন।
- পাসওয়ার্ড ইতিহাসের দৈর্ঘ্য সেট করুন (দৈর্ঘ্য বলতে ইতিহাসে সেভ করা পুরনো পাসওয়ার্ডের সংখ্যা বোঝায়)। এটি ব্যবহারকারীদের আগে ব্যবহার করা শেষ nটি পাসওয়ার্ডের মধ্যে কোনও একটি পুনরায় ব্যবহার করা থেকে আটকায়।
- ডিভাইসে কাজ করলে, স্টোরেজ এরিয়া এনক্রিপ্ট করা উচিত কিনা তা উল্লেখ করুন।
- ডিভাইস লক হওয়ার আগে সর্বাধিক কতক্ষণ অ্যাক্টিভ না থেকে সময় অতিবাহিত হতে পারে তা সেট করুন।
- ডিভাইসটি অবিলম্বে লক করুন।
- ডিভাইসের ডেটা মুছে দেওয়া (অর্থাৎ, ফ্যাক্টরি সেটিংস ফিরিয়ে আনা)।
- ক্যামেরা বন্ধ করুন।
ছবি ১. স্যাম্পেল অ্যাপের স্ক্রিনশট
ডিভাইস অ্যাডমিনিস্ট্রেশন অ্যাপ ডেভেলপ করা
সিস্টেম অ্যাডমিনিস্ট্রেটররা ডিভাইস অ্যাডমিনিস্ট্রেশন API ব্যবহার করে এমন একটি অ্যাপ লিখতে পারেন যা রিমোট/স্থানীয় ডিভাইস নিরাপত্তা নীতি প্রয়োগ করে। এই বিভাগে ডিভাইস অ্যাডমিনিস্ট্রেশন অ্যাপ তৈরি করার সাথে জড়িত ধাপগুলির সারসংক্ষেপ দেওয়া হয়েছে।
ম্যানিফেস্ট তৈরি করা হচ্ছে
ডিভাইস অ্যাডমিনিস্ট্রেশন API ব্যবহার করতে, অ্যাপের ম্যানিফেস্টে নিম্নলিখিতগুলি অন্তর্ভুক্ত থাকতে হবে:
DeviceAdminReceiver-এর একটি সাবক্লাস যার মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত:BIND_DEVICE_ADMINঅনুমতি।ACTION_DEVICE_ADMIN_ENABLEDইনটেন্টের উত্তর দেওয়ার ক্ষমতা, যা ম্যানিফেস্টে ইনটেন্ট ফিল্টার হিসেবে প্রকাশ করা হয়।
- মেটাডেটাতে ব্যবহৃত নিরাপত্তা নীতির ঘোষণা।
ডিভাইস অ্যাডমিনিস্ট্রেশন স্যাম্পেল ম্যানিফেস্ট থেকে নেওয়া একটি উদ্ধৃতি এখানে দেওয়া হল:
<activity android:name=".app.DeviceAdminSample" android:label="@string/activity_sample_device_admin"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.SAMPLE_CODE" /> </intent-filter> </activity> <receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver" android:label="@string/sample_device_admin" android:description="@string/sample_device_admin_description" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin_sample" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
মনে রাখবেন:
- নিম্নলিখিত অ্যাট্রিবিউটগুলি স্ট্রিং রিসোর্সকে রেফার করে যা স্যাম্পেল অ্যাপের জন্য
ApiDemos/res/values/strings.xml-এ থাকে। রিসোর্স সম্পর্কে আরও জানতে, অ্যাপ্লিকেশন রিসোর্স দেখুন।android:label="@string/activity_sample_device_admin"বলতে অ্যাক্টিভিটির জন্য ব্যবহারকারীর পাঠযোগ্য লেবেলকে বোঝায়।android:label="@string/sample_device_admin"বলতে অনুমতির জন্য ব্যবহারকারী-পাঠযোগ্য লেবেলকে বোঝায়।android:description="@string/sample_device_admin_description"বলতে অনুমতির ব্যবহারকারী-পাঠযোগ্য বিবরণকে বোঝায়। বিবরণ সাধারণত লেবেলের চেয়ে দীর্ঘ এবং আরও তথ্যপূর্ণ হয়।
android:permission="android.permission.BIND_DEVICE_ADMIN"হল এমন একটি অনুমতি যাDeviceAdminReceiverসাবক্লাসের থাকতেই হবে, যাতে শুধুমাত্র সিস্টেমই রিসিভারের সাথে ইন্টার্যাক্ট করতে পারে (কোনও অ্যাপকে এই অনুমতি দেওয়া যাবে না)। এটি অন্যান্য অ্যাপকে আপনার ডিভাইস অ্যাডমিন অ্যাপের অপব্যবহার করা থেকে আটকায়।android.app.action.DEVICE_ADMIN_ENABLEDহল প্রাথমিক অ্যাকশন যা কোনও ডিভাইস ম্যানেজ করার অনুমতি পেতেDeviceAdminReceiverসাবক্লাসকে অবশ্যই ম্যানেজ করতে হবে। ব্যবহারকারী ডিভাইস অ্যাডমিন অ্যাপ চালু করলে এটি রিসিভারে সেট করা হয়। আপনার কোড সাধারণত এটিonEnabled()-এ ম্যানেজ করে। কাজ করার জন্য, রিসিভারের কাছেওBIND_DEVICE_ADMINঅনুমতি থাকতে হবে যাতে অন্য অ্যাপ এটির অপব্যবহার করতে না পারে।- ব্যবহারকারী ডিভাইস অ্যাডমিন অ্যাপ চালু করলে, তা নির্দিষ্ট সিস্টেম ইভেন্টের ব্রডকাস্টের প্রতিক্রিয়ায় অ্যাকশন নেওয়ার জন্য রিসিভারকে অনুমতি দেয়। উপযুক্ত ইভেন্ট ঘটলে, অ্যাপটি একটি নীতি আরোপ করতে পারে। যেমন, ব্যবহারকারী যদি এমন একটি নতুন পাসওয়ার্ড সেট করার চেষ্টা করেন যা নীতি সংক্রান্ত প্রয়োজনীয়তা পূরণ করে না, তাহলে অ্যাপটি ব্যবহারকারীকে অন্য একটি পাসওয়ার্ড বেছে নিতে বলতে পারে যা প্রয়োজনীয়তা পূরণ করে।
- আপনার অ্যাপ প্রকাশ করার পরে রিসিভারের নাম পরিবর্তন করবেন না। ম্যানিফেস্টে নাম পরিবর্তন হলে, ব্যবহারকারীরা অ্যাপ আপডেট করার সময় ডিভাইস অ্যাডমিন বন্ধ হয়ে যায়। আরও জানতে,
<receiver>দেখুন। android:resource="@xml/device_admin_sample"মেটাডেটাতে ব্যবহৃত নিরাপত্তা নীতি ঘোষণা করে। মেটাডেটা ডিভাইস অ্যাডমিনিস্ট্রেটরের জন্য অতিরিক্ত তথ্য প্রদান করে, যাDeviceAdminInfoক্লাস দ্বারা পার্স করা হয়। এখানেdevice_admin_sample.xml-এর কন্টেন্ট দেওয়া হল:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <limit-password /> <watch-login /> <reset-password /> <force-lock /> <wipe-data /> <expire-password /> <encrypted-storage /> <disable-camera /> </uses-policies> </device-admin>
আপনার ডিভাইস অ্যাডমিনিস্ট্রেশন অ্যাপ ডিজাইন করার সময়, আপনাকে সব নীতি অন্তর্ভুক্ত করতে হবে না, শুধু আপনার অ্যাপের জন্য প্রাসঙ্গিক নীতিগুলি অন্তর্ভুক্ত করুন।
ম্যানিফেস্ট ফাইল সম্পর্কে আরও আলোচনার জন্য, Android ডেভেলপার নির্দেশিকা দেখুন।কোড প্রয়োগ করা হচ্ছে
ডিভাইস অ্যাডমিনিস্ট্রেশন API-তে নিম্নলিখিত ক্লাস অন্তর্ভুক্ত থাকে:
DeviceAdminReceiver- ডিভাইস অ্যাডমিনিস্ট্রেশন কম্পোনেন্ট প্রয়োগ করার জন্য মূল ক্লাস। এই ক্লাস সিস্টেমের পাঠানো
র-ইনটেন্ট অ্যাকশন ব্যাখ্যা করার
সুবিধা প্রদান করে। আপনার ডিভাইস অ্যাডমিনিস্ট্রেশন অ্যাপে অবশ্যই একটি
DeviceAdminReceiverসাবক্লাস থাকতে হবে। DevicePolicyManager- ডিভাইসে এনফোর্স করা নীতি ম্যানেজ করার জন্য ক্লাস। এই ক্লাসের বেশিরভাগ
ক্লায়েন্টকে অবশ্যই একটি
DeviceAdminReceiverপ্রকাশ করতে হবে যা ব্যবহারকারী বর্তমানে চালু করেছেন।DevicePolicyManagerএক বা একাধিকDeviceAdminReceiverইনস্ট্যান্সের জন্য নীতি ম্যানেজ করে DeviceAdminInfo- এই ক্লাসটি ডিভাইস অ্যাডমিনিস্ট্রেটর কম্পোনেন্টের জন্য মেটাডেটা নির্দিষ্ট করতে ব্যবহার করা হয়।
এই ক্লাসগুলি সম্পূর্ণ কার্যকরী ডিভাইস অ্যাডমিনিস্ট্রেশন অ্যাপের ভিত্তি প্রদান করে।
এই বিভাগের বাকি অংশে বর্ণনা করা হয়েছে যে কীভাবে আপনি ডিভাইস অ্যাডমিন অ্যাপ লিখতে DeviceAdminReceiver এবং
DevicePolicyManager API ব্যবহার করবেন।
DeviceAdminReceiver সাবক্লাস করা হচ্ছে
ডিভাইস অ্যাডমিন অ্যাপ তৈরি করতে, আপনাকে অবশ্যই
DeviceAdminReceiver সাবক্লাস করতে হবে। DeviceAdminReceiver ক্লাসে
কলব্যাকের একটি সিরিজ থাকে যা নির্দিষ্ট ইভেন্ট
ঘটলে ট্রিগার হয়।
DeviceAdminReceiver সাবক্লাসে, স্যাম্পেল অ্যাপ
নির্দিষ্ট ইভেন্টের উত্তরে শুধু Toast বিজ্ঞপ্তি
দেখায়। যেমন:
Kotlin
class DeviceAdminSample : DeviceAdminReceiver() { private fun showToast(context: Context, msg: String) { context.getString(R.string.admin_receiver_status, msg).let { status -> Toast.makeText(context, status, Toast.LENGTH_SHORT).show() } } override fun onEnabled(context: Context, intent: Intent) = showToast(context, context.getString(R.string.admin_receiver_status_enabled)) override fun onDisableRequested(context: Context, intent: Intent): CharSequence = context.getString(R.string.admin_receiver_status_disable_warning) override fun onDisabled(context: Context, intent: Intent) = showToast(context, context.getString(R.string.admin_receiver_status_disabled)) override fun onPasswordChanged(context: Context, intent: Intent, userHandle: UserHandle) = showToast(context, context.getString(R.string.admin_receiver_status_pw_changed)) ... }
জাভা
public class DeviceAdminSample extends DeviceAdminReceiver { void showToast(Context context, String msg) { String status = context.getString(R.string.admin_receiver_status, msg); Toast.makeText(context, status, Toast.LENGTH_SHORT).show(); } @Override public void onEnabled(Context context, Intent intent) { showToast(context, context.getString(R.string.admin_receiver_status_enabled)); } @Override public CharSequence onDisableRequested(Context context, Intent intent) { return context.getString(R.string.admin_receiver_status_disable_warning); } @Override public void onDisabled(Context context, Intent intent) { showToast(context, context.getString(R.string.admin_receiver_status_disabled)); } @Override public void onPasswordChanged(Context context, Intent intent, UserHandle userHandle) { showToast(context, context.getString(R.string.admin_receiver_status_pw_changed)); } ... }
অ্যাপ চালু করা হচ্ছে
ডিভাইস অ্যাডমিন অ্যাপকে যেসব গুরুত্বপূর্ণ ইভেন্ট ম্যানেজ করতে হয় তার মধ্যে একটি হল ব্যবহারকারী অ্যাপ চালু করছেন। নীতি এনফোর্স করার জন্য ব্যবহারকারীকে স্পষ্টভাবে অ্যাপ চালু করতে হবে। ব্যবহারকারী অ্যাপটি চালু না করার সিদ্ধান্ত নিলে এটি ডিভাইসে থাকবে, তবে এর নীতিগুলি প্রয়োগ করা হবে না এবং ব্যবহারকারী অ্যাপটির কোনও সুবিধা পাবেন না।
ব্যবহারকারী এমন কোনও অ্যাকশন করলে অ্যাপ চালু করার প্রসেস শুরু হয় যা ACTION_ADD_DEVICE_ADMIN
ইনটেন্ট ট্রিগার করে। স্যাম্পেল অ্যাপে, ব্যবহারকারী অ্যাডমিন
চালু করুন চেকবক্সে ক্লিক করলে এটি হয়।
ব্যবহারকারী অ্যাডমিন চালু করুন চেকবক্সে ক্লিক করলে, ডিসপ্লে পরিবর্তিত হয়ে ব্যবহারকারীকে ডিভাইস অ্যাডমিন অ্যাপ অ্যাক্টিভেট করার জন্য প্রম্পট করে, যেমনটি ছবি ২-এ দেখানো হয়েছে।
ছবি ২. স্যাম্পেল অ্যাপ: অ্যাপ অ্যাক্টিভেট করা
ব্যবহারকারী অ্যাডমিন চালু করুন চেকবক্সে ক্লিক করলে নিচে দেখানো কোডটি এক্সিকিউট করা হয়। এর ফলে
onPreferenceChange()
কলব্যাক ট্রিগার হয়। ব্যবহারকারী এই Preference-এর ভ্যালু পরিবর্তন করলে এবং সেটি সেট এবং/অথবা সেভ করার সময় এই কলব্যাক ইনভোক করা হয়। ব্যবহারকারী অ্যাপটি চালু করলে, ডিসপ্লে
পরিবর্তন হয়ে ব্যবহারকারীকে ডিভাইস অ্যাডমিন অ্যাপ চালু করার জন্য প্রম্পট করে, যেমনটি চিত্র
২-এ দেখানো হয়েছে। অন্যথায়, ডিভাইস অ্যাডমিন অ্যাপ বন্ধ করা আছে।
Kotlin
override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean { if (super.onPreferenceChange(preference, newValue)) return true val value = newValue as Boolean if (preference == enableCheckbox) { if (value != adminActive) { if (value) { // Launch the activity to have the user enable our admin. val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN).apply { putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminSample) putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, activity.getString(R.string.add_admin_extra_app_text)) } startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN) // return false - don't update checkbox until we're really active return false } else { dpm.removeActiveAdmin(deviceAdminSample) enableDeviceCapabilitiesArea(false) adminActive = false } } } else if (preference == disableCameraCheckbox) { dpm.setCameraDisabled(deviceAdminSample, value) } return true }
জাভা
@Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (super.onPreferenceChange(preference, newValue)) { return true; } boolean value = (Boolean) newValue; if (preference == enableCheckbox) { if (value != adminActive) { if (value) { // Launch the activity to have the user enable our admin. Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminSample); intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, activity.getString(R.string.add_admin_extra_app_text)); startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN); // return false - don't update checkbox until we're really active return false; } else { dpm.removeActiveAdmin(deviceAdminSample); enableDeviceCapabilitiesArea(false); adminActive = false; } } } else if (preference == disableCameraCheckbox) { dpm.setCameraDisabled(deviceAdminSample, value); } return true; }
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
mDeviceAdminSample)
লাইনটি থেকে বোঝা যায় যে mDeviceAdminSample (যা
একটি DeviceAdminReceiver কম্পোনেন্ট) হল টার্গেট নীতি।
এই লাইনটি চিত্র ২-এ দেখানো ইউজার ইন্টারফেসকে আহ্বান করে, যা ব্যবহারকারীদের সিস্টেমে ডিভাইস অ্যাডমিনিস্ট্রেটর যোগ করার (অথবা তাদের এটি প্রত্যাখ্যান করার অনুমতি দেয়) মাধ্যমে গাইড করে।
অ্যাপকে যখন এমন কোনও অপারেশন করতে হয় যা ডিভাইস অ্যাডমিন অ্যাপ চালু থাকার উপর নির্ভর করে, তখন এটি কনফার্ম করে যে অ্যাপটি অ্যাক্টিভ আছে। এটি করার জন্য এটি DevicePolicyManager পদ্ধতি ব্যবহার করে
isAdminActive()। লক্ষ্য করুন যে DevicePolicyManager
পদ্ধতি isAdminActive() একটি DeviceAdminReceiver
কম্পোনেন্টকে তার আর্গুমেন্ট হিসেবে গ্রহণ করে:
Kotlin
private lateinit var dpm: DevicePolicyManager ... private fun isActiveAdmin(): Boolean = dpm.isAdminActive(deviceAdminSample)
জাভা
DevicePolicyManager dpm; ... private boolean isActiveAdmin() { return dpm.isAdminActive(deviceAdminSample); }
নীতি ম্যানেজ করা
DevicePolicyManager হল একটি পাবলিক ক্লাস যা ডিভাইসে এনফোর্স করা নীতি
ম্যানেজ করে। DevicePolicyManager এক বা একাধিক DeviceAdminReceiver ইনস্ট্যান্সের
জন্য নীতি ম্যানেজ করে।
আপনি DevicePolicyManager-এর হ্যান্ডেল এইভাবে পাবেন:
Kotlin
dpm = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
জাভা
DevicePolicyManager dpm = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
এই বিভাগে, অ্যাডমিনিস্ট্রেটিভ টাস্ক সম্পূর্ণ করার জন্য কীভাবে DevicePolicyManager ব্যবহার করবেন
তা বর্ণনা করা হয়েছে:
পাসওয়ার্ড সংক্রান্ত নীতি সেট করুন
DevicePolicyManager-এ ডিভাইসের পাসওয়ার্ড সংক্রান্ত নীতি সেট ও এনফোর্স করার জন্য API অন্তর্ভুক্ত আছে। ডিভাইস অ্যাডমিনিস্ট্রেশন API-তে, পাসওয়ার্ড শুধুমাত্র স্ক্রিন লকের ক্ষেত্রে
প্রযোজ্য। এই বিভাগে পাসওয়ার্ড সম্পর্কিত সাধারণ টাস্কের বিবরণ দেওয়া হয়েছে।
ডিভাইসের জন্য পাসওয়ার্ড সেট করুন
এই কোডটি একটি ইউজার ইন্টারফেস দেখায় যা ব্যবহারকারীকে পাসওয়ার্ড সেট করার জন্য প্রম্পট করে:
Kotlin
Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD).also { intent -> startActivity(intent) }
জাভা
Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD); startActivity(intent);
পাসওয়ার্ডের কোয়ালিটি সেট করুন
পাসওয়ার্ডের কোয়ালিটি নিম্নলিখিত DevicePolicyManagerটি কনস্ট্যান্টের মধ্যে একটি হতে পারে:
PASSWORD_QUALITY_ALPHABETIC- ব্যবহারকারীকে অবশ্যই এমন একটি পাসওয়ার্ড লিখতে হবে যাতে অন্তত বর্ণ (বা অন্য চিহ্ন) অক্ষর থাকে।
PASSWORD_QUALITY_ALPHANUMERIC- ব্যবহারকারীকে এমন পাসওয়ার্ড লিখতে হবে যাতে অন্তত উভয় সংখ্যা এবং বর্ণ (বা অন্য চিহ্ন) অক্ষর থাকে।
PASSWORD_QUALITY_NUMERIC- ব্যবহারকারীকে অবশ্যই এমন একটি পাসওয়ার্ড লিখতে হবে যাতে অন্তত একটি সংখ্যা থাকে।
PASSWORD_QUALITY_COMPLEX- ব্যবহারকারীকে এমন পাসওয়ার্ড লিখতে হবে যাতে অন্তত একটি অক্ষর, একটি সংখ্যা এবং একটি বিশেষ চিহ্ন থাকে।
PASSWORD_QUALITY_SOMETHING- নীতিতে কোনও ধরনের পাসওয়ার্ডের প্রয়োজন, তবে সেটি কী ধরনের তা নিয়ে কোনও বাধ্যবাধকতা নেই।
PASSWORD_QUALITY_UNSPECIFIED- পাসওয়ার্ডের জন্য নীতিতে কোনও প্রয়োজনীয়তা নেই।
যেমন, বর্ণসাংখ্যিক পাসওয়ার্ডের জন্য পাসওয়ার্ড নীতি কীভাবে সেট করবেন তা এখানে দেখানো হল:
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName ... dpm.setPasswordQuality(deviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC)
জাভা
DevicePolicyManager dpm; ComponentName deviceAdminSample; ... dpm.setPasswordQuality(deviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);
পাসওয়ার্ডের কন্টেন্ট সংক্রান্ত প্রয়োজনীয়তা সেট করুন
Android 3.0 থেকে শুরু করে, DevicePolicyManager ক্লাসে
এমন পদ্ধতি অন্তর্ভুক্ত রয়েছে যা আপনাকে পাসওয়ার্ডের কন্টেন্ট ফাইন-টিউন করতে দেয়। যেমন, আপনি এমন একটি নীতি সেট করতে পারেন যাতে বলা হয়েছে যে পাসওয়ার্ডে অবশ্যই কমপক্ষে
nটি বড় হাতের অক্ষর থাকতে হবে। পাসওয়ার্ডের কন্টেন্ট ফাইন-টিউন করার পদ্ধতি এখানে দেওয়া হল:
setPasswordMinimumLetters()setPasswordMinimumLowerCase()setPasswordMinimumUpperCase()setPasswordMinimumNonLetter()setPasswordMinimumNumeric()setPasswordMinimumSymbols()
যেমন, এই স্নিপেট থেকে বোঝা যায় যে পাসওয়ার্ডে অন্তত ২টি বড় হাতের অক্ষর থাকতে হবে:
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val pwMinUppercase = 2 ... dpm.setPasswordMinimumUpperCase(deviceAdminSample, pwMinUppercase)
জাভা
DevicePolicyManager dpm; ComponentName deviceAdminSample; int pwMinUppercase = 2; ... dpm.setPasswordMinimumUpperCase(deviceAdminSample, pwMinUppercase);
পাসওয়ার্ডের ন্যূনতম দৈর্ঘ্য সেট করুন
আপনি পাসওয়ার্ডের ন্যূনতম দৈর্ঘ্য নির্দিষ্ট করে দিতে পারেন। যেমন:
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val pwLength: Int = ... ... dpm.setPasswordMinimumLength(deviceAdminSample, pwLength)
জাভা
DevicePolicyManager dpm; ComponentName deviceAdminSample; int pwLength; ... dpm.setPasswordMinimumLength(deviceAdminSample, pwLength);
পাসওয়ার্ড দিয়ে সর্বাধিক কতবার চেষ্টা করা যাবে তা সেট করুন
ডিভাইস ওয়াইপ (অর্থাৎ, ফ্যাক্টরি সেটিংসে রিসেট) করার আগে আপনি সর্বাধিক কতবার ভুল পাসওয়ার্ড লেখার চেষ্টা করা যাবে তা সেট করতে পারবেন। যেমন:
Kotlin
val dPM:DevicePolicyManager private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val maxFailedPw: Int = ... ... dpm.setMaximumFailedPasswordsForWipe(deviceAdminSample, maxFailedPw)
জাভা
DevicePolicyManager dpm; ComponentName deviceAdminSample; int maxFailedPw; ... dpm.setMaximumFailedPasswordsForWipe(deviceAdminSample, maxFailedPw);
পাসওয়ার্ডের মেয়াদ শেষ হওয়ার টাইমআউট সেট করুন
Android 3.0 থেকে শুরু করে, আপনি
setPasswordExpirationTimeout()
পদ্ধতি ব্যবহার করে পাসওয়ার্ডের মেয়াদ শেষ হওয়ার সময় সেট করতে পারবেন, যা ডিভাইস অ্যাডমিন মেয়াদ শেষ হওয়ার টাইমআউট সেট করার সময় থেকে মিলিসেকেন্ডে ডেল্টা হিসেবে প্রকাশ করা হয়। যেমন:
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val pwExpiration: Long = ... ... dpm.setPasswordExpirationTimeout(deviceAdminSample, pwExpiration)
জাভা
DevicePolicyManager dpm; ComponentName deviceAdminSample; long pwExpiration; ... dpm.setPasswordExpirationTimeout(deviceAdminSample, pwExpiration);
ইতিহাসের উপর ভিত্তি করে পাসওয়ার্ড সীমাবদ্ধ করুন
Android 3.0 থেকে শুরু করে, আপনি
setPasswordHistoryLength()
পদ্ধতি ব্যবহার করে ব্যবহারকারীদের
পুরানো পাসওয়ার্ড পুনরায় ব্যবহার করার ক্ষমতা সীমিত করতে পারেন। এই পদ্ধতিতে length
প্যারামিটার ব্যবহার করা হয়, যা কতগুলি পুরনো
পাসওয়ার্ড স্টোর করা আছে তা নির্দিষ্ট করে। এই নীতি অ্যাক্টিভ থাকলে, ব্যবহারকারীরা এমন কোনও নতুন পাসওয়ার্ড লিখতে পারবেন না যা শেষ nটি পাসওয়ার্ডের সাথে মিলে যায়। এটি ব্যবহারকারীদের
একই পাসওয়ার্ড বারবার ব্যবহার করা থেকে আটকায়। এই নীতি সাধারণত
setPasswordExpirationTimeout()-এর সাথে
ব্যবহার করা হয়,
যা ব্যবহারকারীদের
নির্দিষ্ট সময় অতিবাহিত হওয়ার পরে পাসওয়ার্ড আপডেট করতে বাধ্য করে।
যেমন, এই স্নিপেট ব্যবহারকারীদের তাদের শেষ ৫টি পাসওয়ার্ডের যেকোনও একটি পুনরায় ব্যবহার করতে বাধা দেয়:
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val pwHistoryLength = 5 ... dpm.setPasswordHistoryLength(deviceAdminSample, pwHistoryLength)
জাভা
DevicePolicyManager dpm; ComponentName deviceAdminSample; int pwHistoryLength = 5; ... dpm.setPasswordHistoryLength(deviceAdminSample, pwHistoryLength);
ডিভাইস লক সেট করুন
ডিভাইস লক হওয়ার আগে ব্যবহারকারী সর্বাধিক কতক্ষণ অ্যাক্টিভ না থাকলে চলবে তা আপনি সেট করতে পারবেন। যেমন:
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName private val timeMs: Long = 1000L * timeout.text.toString().toLong() ... dpm.setMaximumTimeToLock(deviceAdminSample, timeMs)
জাভা
DevicePolicyManager dpm; ComponentName deviceAdminSample; ... long timeMs = 1000L*Long.parseLong(timeout.getText().toString()); dpm.setMaximumTimeToLock(deviceAdminSample, timeMs);
এছাড়াও, আপনি প্রোগ্রাম্যাটিক্যালি ডিভাইসকে অবিলম্বে লক করার নির্দেশ দিতে পারেন:
Kotlin
private lateinit var dpm: DevicePolicyManager dpm.lockNow()
জাভা
DevicePolicyManager dpm; dpm.lockNow();
ডেটা মোছা
ডিভাইসটি ফ্যাক্টরি সেটিংসে রিসেট করতে আপনি DevicePolicyManager পদ্ধতি
wipeData() ব্যবহার করতে পারেন। ডিভাইস হারিয়ে বা চুরি হয়ে গেলে
এটি কাজে লাগে। সাধারণত, নির্দিষ্ট কিছু শর্ত পূরণ হলে তবেই ডিভাইসের ডেটা মুছে দেওয়ার
সিদ্ধান্ত নেওয়া হয়। যেমন, আপনি
setMaximumFailedPasswordsForWipe() ব্যবহার করে বলতে পারেন যে নির্দিষ্ট সংখ্যক বার ভুল পাসওয়ার্ড দেওয়ার পরে ডিভাইস
ওয়াইপ করা উচিত।
আপনি এইভাবে ডেটা মুছতে পারবেন:
Kotlin
private lateinit var dpm: DevicePolicyManager dpm.wipeData(0)
জাভা
DevicePolicyManager dpm; dpm.wipeData(0);
wipeData() পদ্ধতিটি অতিরিক্ত বিকল্পের বিট মাস্ককে
প্যারামিটার হিসেবে গ্রহণ করে। বর্তমানে ভ্যালু অবশ্যই ০ হতে হবে।
ক্যামেরা বন্ধ করুন
Android 4.0 থেকে শুরু করে, আপনি ক্যামেরা বন্ধ করতে পারবেন। মনে রাখবেন, এটি স্থায়ীভাবে বন্ধ করতে হবে না। প্রসঙ্গ, সময় এবং আরও অনেক কিছুর উপর ভিত্তি করে ক্যামেরা ডায়নামিকভাবে চালু/বন্ধ করা যেতে পারে।
setCameraDisabled() পদ্ধতি ব্যবহার করে
ক্যামেরা বন্ধ করা আছে কিনা তা আপনি নিয়ন্ত্রণ করতে পারবেন। যেমন, এই স্নিপেট চেকবক্স সেটিংয়ের উপর ভিত্তি করে ক্যামেরা চালু বা বন্ধ করার জন্য সেট করে:
Kotlin
private lateinit var disableCameraCheckbox: CheckBoxPreference private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName ... dpm.setCameraDisabled(deviceAdminSample, mDisableCameraCheckbox.isChecked)
জাভা
private CheckBoxPreference disableCameraCheckbox; DevicePolicyManager dpm; ComponentName deviceAdminSample; ... dpm.setCameraDisabled(deviceAdminSample, mDisableCameraCheckbox.isChecked());
স্টোরেজ এনক্রিপশন
Android 3.0 থেকে শুরু করে, আপনি
setStorageEncryption()
পদ্ধতি ব্যবহার করে স্টোরেজ এরিয়া এনক্রিপ্ট করার জন্য প্রয়োজনীয় নীতি সেট করতে পারবেন, যেখানে এটি কাজ করে।
যেমন:
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var deviceAdminSample: ComponentName ... dpm.setStorageEncryption(deviceAdminSample, true)
জাভা
DevicePolicyManager dpm; ComponentName deviceAdminSample; ... dpm.setStorageEncryption(deviceAdminSample, true);
স্টোরেজ এনক্রিপশন কীভাবে চালু করতে হয় তার সম্পূর্ণ উদাহরণ দেখতে, ডিভাইস অ্যাডমিনিস্ট্রেশন API স্যাম্পেল দেখুন।
অতিরিক্ত কোড স্যাম্পেল
Android AppRestrictionEnforcer এবং DeviceOwner স্যাম্পেল এই পৃষ্ঠায় কভার করা API-এর ব্যবহার আরও ভালভাবে দেখায়।