एंड्रॉइड 5.0 उत्पादन उपकरणों में टास्क लॉकिंग को कैसे सक्षम करें


12

यह StackOverflow प्रश्न एंड्रॉइड L डेवलपर प्रीव्यू में डिवाइस ओनर ऐप और इस तरह कियोस्क मोड को सक्षम करने का तरीका बताता है। जैसा कि विधि को एंड्रॉइड के एक यूजरडबग बिल्ड की आवश्यकता होती है, डिवाइस को रूट करना, और एक्सएमएल फाइल को रूट फाइल सिस्टम में कॉपी करना, यह किसी कंपनी के अंदर एकल फ़ंक्शन एंड्रॉइड डिवाइस के बड़े पैमाने पर तैनाती के लिए उपयुक्त नहीं लगता है।

एंड्रॉइड L उपकरणों के उत्पादन पर डिवाइस के मालिक ऐप कैसे स्थापित करने जा रहे हैं?


क्या तुमने इस मुद्दे का नारा दिया?
कोटिओस


धन्यवाद @Spynet - जो समाधान का सबसे पूर्ण सारांश प्रतीत होता है।
एड्रियन कॉक्स

1
src के साथ अच्छे गाइड के लिए यहां एक नज़र डालें: objectpartners.com/2014/11/04/…
हेडन थ्रिंग

जवाबों:


14

( संपादित करें: कुछ और परीक्षण के बाद अपडेट किया गया)

नवीनतम प्रलेखन की जाँच करें ।

इस सुविधा को अब स्क्रीन पिनिंग कहा जाता है, और ऐप को डिवाइस का मालिक नहीं होना चाहिए। यदि डिवाइस स्वामी सेट नहीं है, तो उपयोगकर्ता को स्वीकार करने के लिए प्रेरित किया जाएगा। लेकिन कियोस्क उपयोग के लिए इसके साथ समस्याएं हैं, नीचे उल्लेख किया गया है।

स्क्रीन पिनिंग को सक्रिय करने के दो तरीके हैं:

मैन्युअल रूप से: उपयोगकर्ता सेटिंग्स> सिक्योरिटी> स्क्रीन पिनिंग में स्क्रीन पिनिंग को सक्षम कर सकते हैं, और उन कार्यों का चयन कर सकते हैं जिन्हें वे रीइन्ट स्क्रीन में ग्रीन पिन आइकन को छूकर पिन करना चाहते हैं। प्रोग्रामेटिकली: स्क्रीन पिनिंग को प्रोग्रामेटिक रूप से सक्रिय करने के लिए, अपने ऐप से startLockTask () को कॉल करें। यदि अनुरोध करने वाला ऐप डिवाइस का स्वामी नहीं है, तो उपयोगकर्ता को पुष्टि के लिए संकेत दिया जाता है। एक उपकरण स्वामी ऐप उपयोगकर्ता की पुष्टि के चरण के बिना ऐप्स को सक्षम करने के लिए setLockTaskPackages () विधि को कॉल कर सकता है।

यदि आप स्क्रीन पिनिंग को प्रोग्रामिक रूप से सक्रिय करते हैं (नॉन डिवाइस ओनर ऐप) या रीइन्ट में पिन का उपयोग करके डिवाइस पर आपको निम्न व्यवहार मिलता है:

एक संवाद उपयोगकर्ता से पूछता है कि क्या वे स्क्रीन पिनिंग को सक्षम करना चाहते हैं और यदि वे बाहर निकलने के लिए पासवर्ड की आवश्यकता चाहते हैं। यदि वे हां दबाते हैं तो स्टेटस बार और नोटिफिकेशन गायब हो जाते हैं, बैक, होम और रीसेंट बटन गायब नहीं होते हैं। होम या रीसेंट पर टैप करने से एक टोस्ट दिखाई देता है जो उपयोगकर्ता को स्क्रीन पिनिंग से बाहर निकलने का तरीका बताता है।

उपयोगकर्ता फिर से नीचे पकड़ सकता है और स्क्रीन पिनिंग से बाहर निकलने के लिए पुनरावृत्ति करता है। यदि उपयोगकर्ता को पासवर्ड की आवश्यकता होती है, तो वे सीधे लॉक स्क्रीन पर पहुंच जाएंगे। इस व्यवहार का मतलब है कि यह कियोस्क इमो के लिए उपयुक्त नहीं है। जैसा कि कियोस्क उपयोगकर्ताओं के लिए लॉक स्क्रीन पर देखना समाप्त करना बहुत आसान है।

एक उचित कियोस्क मोड प्राप्त करने के लिए हमें डिवाइस के मालिक को सेट करने की आवश्यकता है। Google का दस्तावेज़ कहता है कि आपको NFC के साथ ऐसा करने की आवश्यकता है:

डिवाइस के मालिक को तैनात और सक्रिय करने के लिए, आपको एक एनएफसी डेटा ट्रांसफर को एक प्रोग्रामिंग ऐप से डिवाइस पर करना होगा, जबकि डिवाइस अपनी असुरक्षित स्थिति में है।

ऐसा करने के लिए एनएफसी का उपयोग करना थोड़ा जटिल लगता है (क्या होगा यदि किसी डिवाइस में एनएफसी नहीं है?)। मैंने अभी तक इसकी जांच नहीं की है कि क्या कोई व्यक्ति एनएफसी द्वारा डिवाइस के मालिक को सेट करने के बारे में जानकारी प्रदान कर सकता है? जो अब आपके प्रश्न का मुख्य बिंदु बन गया है। (यानी गैर-निहित डिवाइस पर डिवाइस के मालिक की स्थापना)

लेकिन व्यवहार की पुष्टि करने के लिए उम्मीद के मुताबिक है कि यदि आप एक डिवाइस को रूट करते हैं तो आप Google के पिछले निर्देशों के अनुसार डिवाइस के मालिक को सेट कर सकते हैं

अब आप App को ठीक से लॉक कर सकते हैं, उपयोगकर्ता को स्वीकार करने के लिए कोई संवाद दिखाई नहीं देता है, जब रीसेंट और होम बटन को सक्षम किया जाता है और उपयोगकर्ता ऐप को तब तक नहीं छोड़ सकता जब तक आपका ऐप खुद को अनलॉक नहीं करता। एक उचित कियोस्क मोड। मैंने इसका परीक्षण नेक्सस 7 2013 में नवीनतम लॉलीपॉप बिल्ड के साथ किया है।

निम्नलिखित स्निपेट लॉक पर बदल जाता है:

mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdminSample = new ComponentName(this, DeviceAdminSample.class);

if (mDPM.isDeviceOwnerApp(this.getPackageName())) {
    Log.d(TAG, "isDeviceOwnerApp: YES");
    String[] packages = {this.getPackageName()};
    mDPM.setLockTaskPackages(mDeviceAdminSample, packages);
} else {
    Log.d(TAG, "isDeviceOwnerApp: NO");
}

if (mDPM.isLockTaskPermitted(this.getPackageName())) {
    Log.d(TAG, "isLockTaskPermitted: ALLOWED");
    startLockTask();
} else {
    Log.d(TAG, "isLockTaskPermitted: NOT ALLOWED");
}

मुझे लगता है कि यह इस समय उपलब्ध सर्वोत्तम उत्तर है। एनएफसी कदम एक रहस्य बना हुआ है, लेकिन एक बहुत ही संकीर्ण प्रश्न है।
एड्रियन कॉक्स

मैं NFC स्टेप को काम करने की कोशिश कर रहा हूं, लेकिन कोई सफलता नहीं मिली, मैंने यहां इस पर एक सवाल शुरू किया । इसके अलावा कियोस्क के उपयोग के लिए स्क्रीन पिनिंग को बेहतर बनाने के लिए Google के साथ एक सुविधा का अनुरोध है
tagy22

1

मैं उस उत्तर पर टिप्पणी नहीं कर सकता जो उपद्रव का एक सा है, लेकिन tagy22 के उत्तर का पूरक है जिसका उपयोग आप dpmउपकरण के स्वामी को सेट करने के लिए कर सकते हैं । अधिक जानकारी यहाँ


1
dpmयदि डिवाइस में कोई खाता (जैसे Google खाता) सेट किया गया है, तो कार्य नहीं किया जाएगा।
Firelord

हालांकि उस मामले में एनएफसी होगा? मैं इस धारणा के अधीन था कि एक उपकरण के मालिक को एक खाता अवधि से पहले सेट होने की आवश्यकता है।
ट्रॉय पैट्रिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.