दिलचस्प पोस्ट
त्रुटि: निर्भरता के साथ संघर्ष 'com.google.code.findbugs: jsr305' वादे के बारे में / ए + विशिष्टता, "तोनीय" और "वादा" के बीच अंतर क्या है? टाइमआउट पैटर्न – कितना बुरा धागा है। SHA1 टकराव की संभावना Jquery $ वास्तव में वापस क्या करता है? अपने गुणों के आधार पर सरणी के तत्व का सूचकांक प्राप्त करना BigQuery में पिवट को कैसे स्केल करना? ओरेकल: क्या क्वेरी के लिए एक उपकरण है, जैसे कि प्रोलेटर के लिए एसक्यूएल सर्वर? एक पृष्ठ वेबसाइट में jquery AJAX का उपयोग कर पृष्ठों को लोड करते समय प्रगति बार दिखाएं IPhone में उद्देश्य-सी में प्रकार History.pushState के माध्यम से इतिहास के परिवर्तनों के बारे में सूचित कैसे किया जाए? एप्लिकेशन की प्रक्रिया को आवेदन ट्रे से हटा दिए जाने के बाद सेवा की प्रक्रिया को मार दिया जाता है जावा में प्रोग्राममैटिक डेडलॉक पहचान सी / सी + + स्रोत कोड विज़ुअलाइज़ेशन? MySQL में बाइनरी डेटा

Android में कियोस्क मोड

मैं यह मूल्यांकन करने की प्रक्रिया में हूं कि एंड्रॉइड डिवाइसों पर चलने के लिए और कैसे एक सीएफ़ .नेट एंटरप्राइज़ एप्लीकेशन को पोर्ट किया जा सकता है। विंडोज़ मोबाइल फोन पर आवेदन कियोस्क मोड में चलाया जाता है जहां बूटिंग के बाद पूर्ण स्क्रीन-मोड में एप्लिकेशन ऑटोस्टार्ट और उपयोगकर्ताओं के साथ गलती से या स्वेच्छा से फोन के किसी भी अन्य भाग में प्रवेश करने में असमर्थ हैं।

क्या एंड्रॉइड को बूट करने के बाद केवल एक ही एप्लिकेशन ऑटोस्टार्ट होने पर और संभवतः एंड्रॉइड डिवाइस के किसी भी अन्य हिस्से में पहुंच से उपयोगकर्ताओं को गलती से (या स्वेच्छा से) रोकना संभव है?

Solutions Collecting From Web of "Android में कियोस्क मोड"

आप ब्रॉडकास्ट रिसीवर में android.intent.action.BOOT_COMPLETED इरादे को सुनकर बूट पर एप्लिकेशन पुनः आरंभ कर सकते हैं और वहां से अपनी गतिविधि शुरू कर सकते हैं। इस गतिविधि में आप खुद को नए डिफ़ॉल्ट होमस्क्रीन के रूप में रजिस्टर कर सकते हैं [1] और चाबियाँ संभालना

मुझे लगता है कि कुछ उदाहरण हैं कि आप ढांचे को संशोधित किए बिना भी संभाल सकते हैं (वर्तमान में सक्रिय अनुप्रयोग दिखाने के लिए घर पर लंबे समय से) – मैं भी गलत भी हो सकता है

लेकिन एक प्रोटोटाइप के लिए जो पर्याप्त हो सकता है

आनंद लें!

[1]:

 <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> 

कियोस्क को सक्षम करने के लिए आप इसे अनुकूलित कर सकते हैं (मेनू तक पहुंच अक्षम करें, एप्लिकेशन जोड़ आदि को सीमित करें) http://code.google.com/p/android-launcher-plus/

नए एंड्रॉइड एल पूर्वावलोकन में, Google ने टास्क लॉकिंग की घोषणा की है, जो वास्तव में ऐसा करता है। ऐसा लगता है कि रूट की जरूरत है लेकिन

एल डेवलपर पूर्वावलोकन एक नया कार्य लॉकिंग एपीआई का परिचय देता है जो आपको अस्थायी रूप से उपयोगकर्ताओं को आपके ऐप को छोड़ने या नोटिफिकेशन से बाधित होने से रोकता है। इसका इस्तेमाल हो सकता है, उदाहरण के लिए, यदि आप एंड्रॉइड पर उच्च स्टेक मूल्यांकन आवश्यकताओं का समर्थन करने के लिए एक शिक्षा ऐप विकसित कर रहे हैं एक बार जब आपका ऐप इस मोड को सक्रिय करता है, तो उपयोगकर्ता ऐप को मोड से बाहर नहीं होने तक, सूचनाओं को देखने, अन्य ऐप का उपयोग करने या होम स्क्रीन पर वापस नहीं लौट पाएंगे।

अनधिकृत उपयोग को रोकने के लिए, केवल अधिकृत ऐप्स कार्य लॉकिंग सक्रिय कर सकते हैं। इसके अलावा, कार्य लॉकिंग प्राधिकरण को android.app.admin.DevicePolicyManager.setLockTaskComponents()android.app.admin.DevicePolicyManager.setLockTaskComponents() विधि के माध्यम से, विशेष रूप से कॉन्फ़िगर डिवाइस स्वामी ऐप द्वारा प्रदान किया जाना चाहिए।

डिवाइस स्वामी को सेट करने के लिए, इन चरणों का पालन करें:

  • अपने डेवलपमेंट मशीन पर एंड्रॉइड userdebug बिल्ड चलाने वाले डिवाइस को अटैच करें।
  • अपने डिवाइस स्वामी ऐप को इंस्टॉल करें
  • एक device_owner.xml फ़ाइल बनाएं और उसे डिवाइस पर /data/system निर्देशिका में सहेजें।
 $ adb root $ adb shell stop $ rm /tmp/device_owner.xml $ echo "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>" >> /tmp/device_owner.xml $ echo "&device-owner package=\"<your_device_owner_package>\" name=\"*<your_organization_name>\" />" >> /tmp/device_owner.xml $ adb push /tmp/device_owner.xml /data/system/device_owner.xml $ adb reboot 

अपने ऐप में कार्य लॉकिंग एपीआई का उपयोग करने से पहले, सत्यापित करें कि आपकी गतिविधि को DevicePolicyManager.isLockTaskPermitted () द्वारा कॉल करके अधिकृत है।

कार्य लॉकिंग को सक्रिय करने के लिए, your अधिकृत गतिविधि से android.app.Activity.startLockTask() कॉल करें।

जब कार्य लॉकिंग सक्रिय है, तो निम्न व्यवहार प्रभावी होता है:

  • स्टेटस बार रिक्त है, और उपयोगकर्ता सूचनाएं और स्थिति जानकारी छिपी हुई है।
  • होम और हाल के ऐप्स बटन छिपे हुए हैं
  • अन्य ऐप्स नई गतिविधियों को लॉन्च नहीं कर सकते हैं
  • वर्तमान ऐप नई गतिविधियों को प्रारंभ कर सकता है, जब तक ऐसा करने से नए कार्य नहीं बनाते हैं
  • जब तक अधिकृत गतिविधि कॉल Activity.stopLockTask() नहीं करता तब तक उपयोगकर्ता आपके ऐप पर लॉक रहता है। Activity.stopLockTask()

थोड़ी देर के लिए इस के लिए खोज के बाद मैं एक अच्छा समाधान के साथ आया हूँ यह जड़ें उपकरणों पर केवल काम करता है, लेकिन मुझे लगता है कि यह केवल एक ऐप के लिए है, तो इसे ठीक करने में कोई समस्या नहीं होनी चाहिए।

  • जोड़कर अपने आवेदन को लांचर बनाओ

     <category android:name="android.intent.category.HOME" /> 

    अपने इरादे-फिल्टर करने के लिए

  • सुनिश्चित करें कि आपका ऐप टूलबार को ढह जाता है ताकि आप अधिसूचना बार तक नहीं पहुंच सकें देखें कि एंड्रॉइड प्रोग्रामैटिक पर स्टेटस बार / अधिसूचना बार कैसे अक्षम किया जाए? या http://blog.vogella.com/2011/02/28/android-hidding-the-status-and-title-bar/

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

किसी अन्य तरीके से http://thebitplague.wordpress.com/2013/04/05/kiosk-mode-on-the-nexus-7/ भी देखें

सिंगल-पर्पज डिवाइसेज़ सेट करें एंड्रॉइड डेवलपर के पृष्ठ ने इन चीजों का वर्णन किया है जिससे आप आसानी से वहां से और चीजें जान सकते हैं।

अब यह एंड्रॉइड 6.0 मार्शमाल्लो और बाद में डिवाइस को कॉरपोरेट-स्वामित्व वाले, एकल-उपयोग (सीओएसयू) उपकरणों के रूप में कॉन्फ़िगर करना आसान है।

इस फोरम पोस्ट में एक अन्य संभव तकनीक मिली उस पद का उद्धरण:

http://www.basic4ppc.com/forum/basic4android-getting-started-tutorials/10839-android-kiosk-mode-tutorial.html

निम्न विधियों का उपयोग करके आप एक ऐसा अनुप्रयोग बना सकते हैं जो "नियमित" प्रयोक्ताओं को आपके आवेदन के अलावा अन्य के साथ खेलने से रोक देगा।

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

जब गतिविधि को रोक दिया जाता है, तो यह एक सेकंड में शुरू करने के लिए सेवा का अनुपालन करता है: कोड:

 Sub Activity_Pause (UserClosed As Boolean) If kiosk Then StartServiceAt(KioskService, DateTime.Now + 1 * DateTime.TicksPerSecond, false) End Sub 

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

सेवा एक अग्रभूमि सेवा के लिए निर्धारित है यह हमारी सेवा को मारने से एंड्रॉइड को रोकता है। कियोस्क मोड को निष्क्रिय करने के लिए स्टॉप बटन पर दबाएं

डाउनलोड करने के लिए यहां उपलब्ध एक कियोस्क-मोड कोड ज़िप फ़ाइल भी दिखाई दे रही है।

बूट पर अपना ऐप प्रारंभ करना

यह पूरा करने का सबसे अच्छा तरीका आपके ऐप को लॉन्चर के रूप में सेट कर रहा है

 <activity ... android:launchMode="singleInstance" android:windowActionBar="false"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 

अपना ऐप लॉक करना

सबसे विश्वसनीय तरीका है लॉलीपॉप या उससे अधिक के साथ एक डिवाइस का उपयोग करना और इसके उपयोग करना

 startLockTask 

सबसे पहले आपको अपना ऐप डिवाइस स्वामी के रूप में सेट करना होगा एनबी आपकी डिवाइस अप्रतिष्ठित होना चाहिए: यदि आपने इसे पंजीकृत किया है, तो आपको फ़ैक्टरी रीसेट करना चाहिए और खाता पंजीकरण छोड़ देना चाहिए।

अपने ऐप को पंजीकृत करने में सक्षम होने के लिए आपको पहले DeviceAdminReceiver घटक को सेटअप करना होगा:

 package com.example.myapp; public class MyDeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver { @Override public void onEnabled(Context context, Intent intent) { Toast.makeText(context, "Device admin permission received", Toast.LENGTH_SHORT).show(); } @Override public CharSequence onDisableRequested(Context context, Intent intent) { return "are you sure?"; } @Override public void onDisabled(Context context, Intent intent) { Toast.makeText(context, "Device admin permission revoked", Toast.LENGTH_SHORT).show(); } @Override public void onLockTaskModeExiting(Context context, Intent intent) { // here you must re-lock your app. make your activity know of this event and make it call startLockTask again! } } 

एक बार आपके पास एक अप्रतिभूत डिवाइस है, तो आप निम्न कमांड को एडीबी से लॉन्च कर सकते हैं ( कोई जरूरी नहीं )

 adb shell dpm set-device-owner com.example.myapp/.MyDeviceAdminReceiver 

एंड्रॉइड से बचने के लिए अपने ऐप को पिन करने के लिए उपयोगकर्ता अनुमति पूछने पर आपको setLockTaskPackages को कॉल करना होगा

आखिरकार!

 @Override public void onResume(){ super.onResume(); DevicePolicyManager mDevicePolicyManager = (DevicePolicyManager) getSystemService( Context.DEVICE_POLICY_SERVICE); ComponentName mAdminComponentName = new ComponentName(getApplicationContext(), MyDeviceAdminReceiver.class); mDevicePolicyManager.setLockTaskPackages(mAdminComponentName, new String[]{getPackageName()}); startLockTask(); } @Override public void finish(){ stopLockTask(); super.finish(); } 

Google ने हाल ही में एंड्रॉइड मैनेजमेंट एपीआई जारी किया है जो एंड्रॉइड 5.1 या इसके बाद के संस्करण चलाने वाले किसी भी एंड्रॉइड डिवाइस के लिए आसानी से कियोस्क मोड स्थापित करने की अनुमति देता है, साथ ही साथ अन्य कई नीतियां सेट कर सकते हैं।

Xposed ढांचे यह कर सकते हैं इसे जड़ की जरूरत है और संभावना है कि यह प्रत्येक और सभी प्लेटफार्मों पर काम नहीं करेगा। कक्षा android.app.StatusBarManager में अक्षम () विधि की तलाश करें।

यहां एंड्रॉइड स्रोत कोड में

अपने खुद के मॉड्यूल को लिखने के लिए यहां देखें: Xposed डेवलपमेंट ट्यूटोरियल

पहली नज़र में आपके विचार से यह बहुत आसान है शुभ लाभ!

एक बूट रिसीवर के साथ अपना आवेदन स्थापित करने के साथ-साथ, स्थिति पट्टी के विस्तार को रोकने के लिए यह समाधान 4.4 और बाद के संस्करणों पर एक पूर्ण कियोस्क ऐप के रूप में काम करता है:

अपने ऑन-क्रेते () में रखें:

  final View view = (View) findViewById(android.R.id.content); if (view != null) { //"hides" back, home and return button on screen. view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN); view.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() { @Override public void onSystemUiVisibilityChange(int visibility) { // Note that system bars will only be "visible" if none of the // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set. if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN); } } }); } 

यह बैक बटन, ऐप और होम बटन को पूरी तरह से छिपा देगा।