12

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

डेवलपर वेबसाइट से, संक्षिप्त विवरण मुझसे कहता है कि यह मैं क्या कोशिश कर रहा हूँ करने के लिए संभव है: प्रोग्राम

http://developer.android.com/about/versions/android-5.0.html#ScreenPinning

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

यह इंगित करता है कि डिवाइस के मालिक ऐप के रूप में, मैं उपयोगकर्ता की पुष्टि के बिना अन्य ऐप्स पिन कर सकता हूं ... लेकिन मुझे नहीं पता कि कैसे करें।

मैं अपना स्वयं का ऐप पिन किए गए मोड में डाल सकता हूं।

किसी भी मदद की सराहना की जाएगी।

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

if (myDevicePolicyManager.isDeviceOwnerApp(this.getPackageName())) { 
    // Device owner 
    String[] packages = {this.getPackageName()}; 
    myDevicePolicyManager.setLockTaskPackages(mDeviceAdminSample, packages); 
} else { 
    // Not a device owner - prompt user or show error 
} 

if (myDevicePolicyManager.isLockTaskPermitted(this.getPackageName())) { 
    // Lock allowed 
    startLockTask(); 
} else { 
    // Lock not allowed - show error or something useful here 
} 
+0

क्या वे ऐप्स हैं जिन्हें आप अपना या तृतीय-पक्ष ऐप्स लॉक करना चाहते हैं? – Hartok

+0

@ हार्टोक, जिस ऐप को मैं लॉक करना चाहता हूं वह तीसरे पक्ष के ऐप्स हैं। – kash

उत्तर

9

setLockTaskPackages() निर्दिष्ट करें कि कौन अनुप्रयोगों (अपने पैकेज के नाम के माध्यम से) प्रोग्राम के रूप में उपयोगकर्ता की पुष्टि के बिना पिन कर दिया करने के लिए सक्षम हो जाएगा प्रयोग किया जाता है:

+0

क्या हम setLockTaskPackages विधि का उपयोग करके अन्य ऐप पिन कर सकते हैं? –

+0

@FlorentDupont, उदाहरण के लिए आपने जो ऐप दिया है com.foo.myapp को आपके द्वारा प्रकाशित एक ऐप होना है जिसे स्क्रीन पिनिंग को अधिकृत करना है? क्या यह हो सकता है कि मैं गुस्से में पक्षियों को कह सकूं ... com.rovio.angrybirds? – kash

+3

@ सुनीलजैन: नहीं, आप setLockTaskPackages के साथ एक और ऐप पिन नहीं कर सकते हैं। ऐसा करने के लिए आपको अन्य ऐप की 'गतिविधि .startLockTask()' का उपयोग करना होगा। @ kash yes, इस उदाहरण में, 'com.foo.myapp' को मेरे द्वारा प्रकाशित किया जाना है। आप किसी अन्य ऐप को प्रोग्रामेटिक रूप से लॉक नहीं कर सकते हैं जिसका आपके स्वामित्व नहीं है। –

0

कोड स्निपेट है कि आप के लिए जा रहा प्राप्त करना चाहिए। setLockTaskPackages() को आपके डिवाइस मालिक ऐप से अधिक कहा जाता है (संभवतः आपके DeviceAdminReceiver की onEnabled() विधि में)।

तो, आप मालिक डिवाइस अनुप्रयोग में, आप की तरह कुछ होगा:

mDPM.setLockTaskPackages("com.foo.myapp"); 

और उसके बाद, अपने "com.foo.myapp" आवेदन में, आप कॉल करना autorized किया जाएगा:

startLockTask(); 

आपका आवेदन तुरंत उपयोगकर्ता की पुष्टि के बिना पिनिंग मोड में प्रवेश करेगा।

यदि आप पहले setLockTaskPackages के साथ अपना आवेदन नहीं करते हैं, तो एप्लिकेशन पिन किया जाएगा लेकिन उपयोगकर्ता को पहले पुष्टि करनी होगी।

भी ध्यान दें कि जब कोई ऐप setLockTaskPackages() साथ registered है, यह मैनुअल पिन की तुलना में कुछ अलग व्यवहार किया है:

  • उपयोगकर्ता देर तक दबाए वापस + हाल करके स्वयं भी आवेदन अनपिन नहीं कर सकते ऐप्स।आपको stopLockTask() के साथ अपने ऐप को प्रोग्रामेटिक रूप से अनपिन करना होगा; , कोई स्क्रीन लॉक प्रदर्शित किया जाता है और भी:
  • "घर" और "हाल ही के एप्लिकेशन" बटन अदृश्य (प्रदर्शित नहीं)
  • एप्लिकेशन अनपिन किया गया है (stopLockTask के माध्यम से()), उपयोगकर्ता सीधे वापस घर के लिए जाना जाएगा रहे हैं यदि एक कीगार्ड सेट है (पैटर्न, कोड, या जो भी कुंजीगार्ड स्क्रीन)।
+0

इसके द्वारा हम केवल अपने ऐप को पिन कर सकते हैं, लेकिन कश ने समझाया कि वह अन्य ऐप पिन करना चाहता है, क्या डिवाइस के मालिक विशेषाधिकारों के साथ DevicePolicyManager का उपयोग करना संभव है? –

+0

हमारे ऐप से अन्य एप्लिकेशन पिन करने का कोई भी तरीका। जैसा कि हम जानते हैं कि घर और हाल के बटन अदृश्य होंगे। फिर इसे पिन करने के लिए किसी अन्य एप्लिकेशन को कैसे प्राप्त करना संभव है। मूल रूप से आवश्यकता एक से अधिक एप्लिकेशन के लिए कियोस्क/पिन किए गए मोड में डिवाइस का उपयोग करने में सक्षम होना चाहिए। – khubaib

+0

कोई सुझाव? – khubaib

3

मेरे पास एक टिप्पणी के लिए पर्याप्त प्रतिष्ठा नहीं है, केवल यह इंगित करेगी कि भौतिक बटन वाले उपकरणों (जैसे सैमसंग गैलेक्सी टैब ए @ चेयरमैन द्वारा उल्लिखित) के लिए आपके आवेदन की मजबूर अनपिनिंग का प्रबंधन करने का एक तरीका है करने के लिए आप हमेशा अपने ऐप्लिकेशन को फिर से पिन करते हुए कर सकते हैं अनपिन के लिए

@Override सार्वजनिक शून्य onLockTaskModeExiting (संदर्भ संदर्भ, आशय आशय)

तो अपने उपयोगकर्ता चाहते हैं: अपने DeviceAdminReceiver कक्षा में लागू निम्नलिखित ;)

संबंधित मुद्दे