डिवाइस एडमिन के बारे में खास जानकारी

डिवाइस एडमिन का बंद होना. Android 9 और इसके बाद के वर्शन वाले फ़ोन पर (एपीआई लेवल 28), एडमिन से जुड़ी कुछ नीतियों को 'अब काम नहीं करता' के तौर पर मार्क किया जाएगा किसी डिवाइस के एडमिन ने शुरू किया है. हमारा सुझाव है कि आप इस बदलाव के लिए अभी से तैयारी शुरू कर दें. सीखने में माइग्रेशन के विकल्प देखने के लिए, डिवाइस एडमिन की सुविधा बंद होना.

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

यह दस्तावेज़ उन डेवलपर के लिए है जो एंटरप्राइज़ डेवलप करना चाहते हैं Android-पावर्ड डिवाइसों के लिए समाधान ढूंढ सकते हैं. इसमें चैनल पर मौजूद अलग-अलग सुविधाओं पर चर्चा की गई है को ज़्यादा बेहतर सुरक्षा देने के लिए, Device Administration API से दिया गया है कर्मचारी के ऐसे डिवाइस जो Android की मदद से काम करते हैं.

ध्यान दें: वर्क पॉलिसी बनाने से जुड़ी जानकारी के लिए Android for Work परिनियोजन के लिए नियंत्रक, देखें डिवाइस नीति नियंत्रक बनाएं.

बिना ग्राफ़िक यूज़र इंटरफ़ेस वाले डिवाइस का मालिकाना हक वाला मोड

Android 14 (एपीआई लेवल 34) में, बिना यूज़र इंटरफ़ेस वाले सिस्टम यूज़र मोड (ऐसे डिवाइस जो कौनसा UserManager.isHeadlessSystemUserMode true नतीजे दिखाता है). हेडलेस सिस्टम यूज़र मोड में सिस्टम का उपयोगकर्ता बैकग्राउंड का उपयोगकर्ता और असली उपयोगकर्ता के लिए, फ़ोरग्राउंड के अतिरिक्त उपयोगकर्ताओं पर निर्भर रहता है इंटरैक्शन. Android 14 में, आपको बिना ग्राफ़िक यूज़र इंटरफ़ेस वाला सहयोगी मोड, इससे प्रोफ़ाइल के मालिक को सभी खातों में अफ़िलिएट उपयोगकर्ता उस सिस्टम उपयोगकर्ता के अलावा जिस पर डिवाइस का स्वामी सेट है.

बिना ग्राफ़िक यूज़र इंटरफ़ेस वाले सिस्टम उपयोगकर्ता के कॉन्फ़िगर किए गए डिवाइसों में (जहां सिस्टम उपयोगकर्ता बैकग्राउंड में चलता है), सिर्फ़ डिवाइस से जुड़ी वे नीतियां जो वैश्विक स्तर पर उपलब्ध हैं (वे नीतियां जो सभी उपयोगकर्ताओं पर लागू होती हैं) फ़ोरग्राउंड में विज्ञापन दिखाने वाले उपयोगकर्ता पर लागू की जाती हैं या उपयोगकर्ताओं को बताना है. यहां जाएं: addUserRestriction देखें.

Android डिवाइस बनाने वाली कंपनियां इनका इस्तेमाल कर सकती हैं: दिशा-निर्देश source.android.com पर पब्लिश किया गया है.

डिवाइस एडमिन एपीआई की खास जानकारी

यहां अलग-अलग तरह के ऐसे ऐप्लिकेशन के उदाहरण दिए गए हैं जो डिवाइस एडमिन एपीआई का इस्तेमाल कर सकते हैं:

  • ईमेल क्लाइंट.
  • रिमोट वाइप करने वाले सुरक्षा ऐप्लिकेशन.
  • डिवाइस मैनेजमेंट की सेवाएं और ऐप्लिकेशन.

यह कैसे काम करता है?

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

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

अगर उपयोगकर्ता, डिवाइस एडमिन ऐप्लिकेशन को चालू नहीं करते हैं, तो यह डिवाइस पर काम नहीं करता है. उपयोगकर्ताओं पर उनकी नीतियां लागू नहीं होंगी और उन्हें ऐप्लिकेशन का कोई भी फ़ायदा नहीं मिलेगा. उदाहरण के लिए, हो सकता है कि वे डेटा सिंक न कर पाएं.

अगर कोई उपयोगकर्ता नीतियों का पालन नहीं करता है (उदाहरण के लिए, अगर कोई उपयोगकर्ता जो दिशा-निर्देशों का उल्लंघन करते हैं), यह ऐप्लिकेशन पर निर्भर करता है कि इन्हें कैसे हैंडल करना है. हालांकि, आम तौर पर इसका नतीजा यह होगा कि उपयोगकर्ता डेटा सिंक करने में सक्षम रहा है.

अगर डिवाइस ऐसे सर्वर से कनेक्ट करने की कोशिश करता है जिसके लिए नीतियों की ज़रूरत नहीं है, तो डिवाइस एडमिन एपीआई में काम करता है, तो कनेक्शन अनुमति दी जानी चाहिए. फ़िलहाल, Device Administration API, कुछ हिस्से को अनुमति नहीं देता है. प्रॉविज़निंग. दूसरे शब्दों में, अगर कोई डिवाइस (उदाहरण के लिए, कोई लेगसी डिवाइस) बताई गई सभी नीतियों का पालन नहीं करती है, तो ऐसी किसी भी सुविधा का इस्तेमाल नहीं किया जा सकता कनेक्ट करने के लिए डिवाइस.

अगर किसी डिवाइस में एक से ज़्यादा एडमिन ऐप्लिकेशन चालू हैं, तो सबसे सख्त नीति यह है लागू किया गया. किसी विशेष एडमिन को टारगेट करने का कोई तरीका नहीं है है.

डिवाइस के किसी मौजूदा एडमिन ऐप्लिकेशन को अनइंस्टॉल करने के लिए, उपयोगकर्ताओं को: सबसे पहले, एडमिन के तौर पर ऐप्लिकेशन का रजिस्ट्रेशन रद्द करें.

नीतियां

एंटरप्राइज़ सेटिंग में, अक्सर ऐसा होता है कि कर्मचारी के डिवाइसों को जो डिवाइस के इस्तेमाल को कंट्रोल करने वाली नीतियों के सख्त सेट का पालन करते हों. कॉन्टेंट बनाने Device Administration API, टेबल 1 में बताई गई नीतियों के साथ काम करता है. ध्यान दें कि डिवाइस एडमिन एपीआई फ़िलहाल सिर्फ़ स्क्रीन के लिए पासवर्ड की सुविधा देता है लॉक:

टेबल 1. डिवाइस एडमिन एपीआई पर काम करने वाली नीतियां.

नीति ब्यौरा
पासवर्ड सक्षम किया गया यह ज़रूरी है कि डिवाइस, पिन या पासवर्ड पूछें.
पासवर्ड की कम से कम लंबाई पासवर्ड के लिए वर्णों की ज़रूरी संख्या सेट करें. उदाहरण के लिए, आपके में कम से कम छ: वर्ण होने के लिए पिन या पासवर्ड ज़रूरी हो सकता है.
अक्षर और अंकों वाला पासवर्ड ज़रूरी है यह ज़रूरी है कि पासवर्ड में सकता है. इनमें प्रतीकात्मक वर्ण शामिल हो सकते हैं.
जटिल पासवर्ड डालना ज़रूरी है यह ज़रूरी है कि पासवर्ड में कम से कम एक अक्षर, एक संख्यात्मक अंक और एक खास निशान होना चाहिए. 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 में पेश किया गया.
पासवर्ड डालने की तय सीमा पूरी हो चुकी है यह बताता है कि कोई उपयोगकर्ता डिवाइस अपना डेटा वाइप करता है. Device Administration API, एडमिन को ये काम करने की भी अनुमति देता है डिवाइस को दूर से फ़ैक्ट्री डिफ़ॉल्ट पर रीसेट करें. यह डेटा को तब सुरक्षित रखता है, जब डिवाइस खो जाता है या चोरी हो जाता है.
ज़्यादा से ज़्यादा कितने समय तक कोई गतिविधि नहीं होगी, इस बारे में जानकारी देने के लिए समय लॉक करें उपयोगकर्ता के आखिरी बार स्क्रीन छूने के बाद से अब तक का समय सेट करता है या डिवाइस द्वारा स्क्रीन लॉक करने से पहले एक बटन दबाया गया. ऐसा होने पर, उपयोगकर्ता उन्हें अपने डिवाइस का इस्तेमाल करने से पहले अपने पिन या पासवर्ड को फिर से डालना होगा और डेटा ऐक्सेस करें. यह वैल्यू 1 से 60 मिनट के बीच हो सकती है.
डिवाइस के स्टोरेज को एन्क्रिप्ट (सुरक्षित) करना ज़रूरी है इससे यह तय होता है कि स्टोरेज एरिया को एन्क्रिप्ट (सुरक्षित) किया जाना चाहिए. ऐसा तब ही होगा, जब डिवाइस पर यह सुविधा काम करती हो. Android 3.0 में पेश किया गया.
कैमरा बंद करें इससे पता चलता है कि कैमरा बंद किया जाना चाहिए. ध्यान दें कि स्थायी रूप से अक्षम करना. कैमरे को डाइनैमिक तरीके से चालू/बंद किया जा सकता है जानकारी, समय वगैरह के हिसाब से तय होती है. Android 4.0 में पेश किया गया.

अन्य सुविधाएं

ऊपर दी गई टेबल में बताई गई नीतियों का समर्थन करने के अलावा, डिवाइस Administration API की मदद से ये काम किए जा सकते हैं:

  • उपयोगकर्ता को कोई नया पासवर्ड सेट करने का निर्देश दें.
  • डिवाइस को तुरंत लॉक करें.
  • डिवाइस का डेटा मिटाएं. इसका मतलब है कि डिवाइस को उसकी फ़ैक्ट्री डिफ़ॉल्ट सेटिंग पर वापस लाएं.

सैंपल ऐप्लिकेशन

इस पेज पर इस्तेमाल किए गए उदाहरण, डिवाइस एडमिन एपीआई पर आधारित हैं नमूना, जिसे SDK टूल के सैंपल में शामिल किया गया है (यहां दिए गए उदाहरण के मुताबिक Android SDK Manager) से साइन इन किया है और जो आपके सिस्टम पर इस तौर पर मौजूद है: <sdk_root>/ApiDemos/app/src/main/java/com/example/android/apis/app/DeviceAdminSample.java.

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

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

पहला डायग्राम. सैंपल ऐप्लिकेशन का स्क्रीनशॉट

डिवाइस एडमिन ऐप्लिकेशन डेवलप करना

सिस्टम एडमिन, डिवाइस एडमिन एपीआई का इस्तेमाल करके, किसी ऐप्लिकेशन में बदलाव कर सकते हैं जो रिमोट/लोकल डिवाइस की सुरक्षा नीति को लागू करती है. इस सेक्शन पर डिवाइस एडमिन बनाने में शामिल चरणों की खास जानकारी देता है है.

मेनिफ़ेस्ट बनाना

डिवाइस एडमिन एपीआई का इस्तेमाल करने के लिए, ऐप्लिकेशन के मेनिफ़ेस्ट में नीचे दी गई जानकारी शामिल होनी चाहिए:

  • 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(). Gemini Chat का इस्तेमाल करने के लिए, पैसे पाने वाले व्यक्ति को 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 डेवलपर गाइड देखें.

कोड लागू करना

डिवाइस एडमिन एपीआई में ये क्लास शामिल हैं:

DeviceAdminReceiver
डिवाइस एडमिन कॉम्पोनेंट लागू करने के लिए बेस क्लास. इस कक्षा में ये सुविधाएं मिलती हैं इससे भेजी गई रॉ इंटेंट ऐक्शन को समझने में आसानी होती है सिस्टम. आपके डिवाइस एडमिन ऐप्लिकेशन में DeviceAdminReceiver सब-क्लास.
DevicePolicyManager
किसी डिवाइस पर लागू की गई नीतियों को मैनेज करने की क्लास. इसके ज़्यादातर क्लाइंट इस क्लास ने एक DeviceAdminReceiver पब्लिश किया हो जिसे उपयोगकर्ता ने वर्तमान में सक्षम है. DevicePolicyManager, इन कामों के लिए नीतियां मैनेज करता है एक या उससे ज़्यादा DeviceAdminReceiver इंस्टेंस
DeviceAdminInfo
इस क्लास का इस्तेमाल मेटाडेटा तय करने के लिए किया जाता है डिवाइस एडमिन कॉम्पोनेंट के लिए.

ये क्लास, डिवाइस को मैनेज करने के लिए पूरी तरह से काम करने वाले ऐप्लिकेशन की बुनियाद तैयार करती हैं. इस सेक्शन के बाकी हिस्से में बताया गया है कि आप DeviceAdminReceiver और डिवाइस एडमिन ऐप्लिकेशन लिखने के लिए DevicePolicyManager एपीआई.

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

Java

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 को ट्रिगर करने वाली कार्रवाई इंटेंट. इस सैंपल ऐप्लिकेशन में भेजा जाता है, तो यह तब होता है जब उपयोगकर्ता चालू करें एडमिन चेकबॉक्स पर सही का निशान लगाएं.

जब उपयोगकर्ता एडमिन चालू करें चेकबॉक्स पर क्लिक करता है, तो उपयोगकर्ता को डिवाइस एडमिन ऐप्लिकेशन को चालू करने का प्रॉम्प्ट भेजने के लिए बदलाव, जैसा कि इमेज में दिखाया गया है 2.

दूसरा डायग्राम. सैंपल ऐप्लिकेशन: ऐप्लिकेशन चालू किया जा रहा है

नीचे दिया गया कोड तब लागू होता है, जब उपयोगकर्ता एडमिन चालू करें चेकबॉक्स पर क्लिक करता है. इसे ट्रिगर करने का असर onPreferenceChange() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है कॉलबैक. इस कॉलबैक को तब शुरू किया जाता है, जब उपयोगकर्ता ने इस Preference की वैल्यू में बदलाव किया हो. साथ ही, यह वैल्यू सेट किए जाने और/या मौजूद रहने वाली हो. यदि उपयोगकर्ता ऐप्लिकेशन को सक्षम कर रहा है, तो उपयोगकर्ता को डिवाइस एडमिन ऐप्लिकेशन को चालू करने का प्रॉम्प्ट भेजने के लिए बदलाव, जैसा कि इमेज में दिखाया गया है 2. ऐसा न होने पर, डिवाइस का एडमिन ऐप्लिकेशन बंद हो जाता है.

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
}

Java

@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)

Java

DevicePolicyManager dpm;
...
private boolean isActiveAdmin() {
    return dpm.isAdminActive(deviceAdminSample);
}

नीतियां मैनेज करना

DevicePolicyManager, नीतियों को मैनेज करने वाली सार्वजनिक क्लास है एक डिवाइस पर लागू किया जाता है. DevicePolicyManager किसी एक के लिए नीतियां मैनेज करता है या ज़्यादा DeviceAdminReceiver इंस्टेंस.

DevicePolicyManager का हैंडल इस तरह से मैनेज किया जाता है:

Kotlin

dpm = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager

Java

DevicePolicyManager dpm =
    (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);

इस सेक्शन में बताया गया है कि परफ़ॉर्म करने के लिए, DevicePolicyManager का इस्तेमाल कैसे करें एडमिन से जुड़े काम:

पासवर्ड के लिए नीतियां सेट करें

DevicePolicyManager में डिवाइस की पासवर्ड नीति. डिवाइस एडमिन एपीआई में, पासवर्ड सिर्फ़ इन पर लागू होता है: स्क्रीन लॉक. इस सेक्शन में, पासवर्ड से जुड़े सामान्य कामों के बारे में बताया गया है.

डिवाइस के लिए पासवर्ड सेट करें

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

Kotlin

Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD).also { intent ->
    startActivity(intent)
}

Java

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)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
dpm.setPasswordQuality(deviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);
पासवर्ड सामग्री की आवश्यकताएं सेट करें

Android 3.0 से शुरू करके, DevicePolicyManager क्लास में ऐसी विधियां शामिल हैं जिनसे आप पासवर्ड की सामग्री को बेहतर बना सकते है. इसके लिए उदाहरण के लिए, एक ऐसी नीति सेट की जा सकती है जिसमें यह बताया गया हो कि पासवर्ड में कम से कम कम से कम एक शब्द होना ज़रूरी है n अपरकेस अक्षर. पासवर्ड को तेज़ी से ठीक करने के तरीके यहां दिए गए हैं कॉन्टेंट:

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

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwMinUppercase = 2
...
dpm.setPasswordMinimumUpperCase(deviceAdminSample, pwMinUppercase)

Java

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)

Java

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)

Java

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)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
long pwExpiration;
...
dpm.setPasswordExpirationTimeout(deviceAdminSample, pwExpiration);
इतिहास के आधार पर पासवर्ड पर पाबंदी लगाएं

Android 3.0 से शुरू करके, आप setPasswordHistoryLength() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है तय करने का तरीका जानें कि पुराने पासवर्ड दोबारा इस्तेमाल करने की सुविधा नहीं होती. इस तरीके को अपनाने में अवधि लगती है पैरामीटर से पता चलता है कि कितने पुराने पासवर्ड सेव किए जाते हैं. इस नीति के चालू होने पर, उपयोगकर्ता नई ऐसेट नहीं डाल सकते ऐसा पासवर्ड जो पिछले n पासवर्ड से मेल खाता हो. यह रोक लगाता है उपयोगकर्ताओं को एक ही पासवर्ड का बार-बार इस्तेमाल करने से रोकना. आम तौर पर, इस नीति का इस्तेमाल के साथ setPasswordExpirationTimeout(), जो उपयोगकर्ता को एक तय समय के बाद अपने पासवर्ड अपडेट करने के लिए.

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

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwHistoryLength = 5
...
dpm.setPasswordHistoryLength(deviceAdminSample, pwHistoryLength)

Java

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)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
long timeMs = 1000L*Long.parseLong(timeout.getText().toString());
dpm.setMaximumTimeToLock(deviceAdminSample, timeMs);

आपके पास प्रोग्राम बनाकर, डिवाइस को तुरंत लॉक करने के लिए भी कहा जा सकता है:

Kotlin

private lateinit var dpm: DevicePolicyManager
dpm.lockNow()

Java

DevicePolicyManager dpm;
dpm.lockNow();

डेटा वाइप करने की कार्रवाई करें

DevicePolicyManager तरीके का इस्तेमाल किया जा सकता है डिवाइस को फ़ैक्ट्री सेटिंग पर रीसेट करने के लिए wipeData(). यह काम का है अगर डिवाइस खो जाता है या चोरी हो जाता है. आम तौर पर, डिवाइस को वाइप करने का फ़ैसला कुछ शर्तों के पूरा होने का नतीजा है. उदाहरण के लिए, यह बताने के लिए setMaximumFailedPasswordsForWipe() कि डिवाइस को पासवर्ड डालने की असफल कोशिशों की संख्या के बाद वाइप कर दिया गया है.

डेटा को इस तरह वाइप किया जाता है:

Kotlin

private lateinit var dpm: DevicePolicyManager
dpm.wipeData(0)

Java

DevicePolicyManager dpm;
dpm.wipeData(0);

wipeData() तरीका अतिरिक्त विकल्पों में से एक बिट मास्क पैरामीटर. फ़िलहाल, वैल्यू 0 होनी चाहिए.

कैमरा बंद करें

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)

Java

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)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
dpm.setStorageEncryption(deviceAdminSample, true);

स्टोरेज एन्क्रिप्ट (सुरक्षित) करने की सुविधा चालू करने के उदाहरण देखने के लिए, Device Administration API सैंपल देखें.

अतिरिक्त कोड सैंपल

Android AppRequestionEnforcer और DeviceOwner इन सैंपल से, इस पेज पर बताए गए एपीआई के इस्तेमाल के बारे में जानकारी मिलती है.