2012-09-15 13 views
9

मैं लॉक स्क्रीन जहां मैं आइसक्रीम सैंडविच में और जेली बीन में होम बटन को निष्क्रिय करना चाहते विकासशील कर रहा हूँ, मैं इसे एंड्रॉयड 2.2 में निम्न विधियों का उपयोग ब्लॉक कर सकते हैं, 2.3ब्लॉक होम बटन

@Override 
public void onAttachedToWindow() { 
    // TODO Auto-generate method stub 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
    super.onAttachedToWindow(); 
} 

भी करने की कोशिश की इस

getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
यहाँ मैं भी विधि या onKeyDown

लेकिन इन से मुलाकात के माध्यम से घटना की जानकारी नहीं मिल रहा है

आईसीएस में मेरे लिए काम नहीं किया गया है, जेली बीन अगर कोई तरीका है जो इसे प्रतिस्थापित कर सकता है तो मुझे

उत्तर

14

पोस्ट आईसीएस यानी एंड्रॉइड 4+, होमबटन के ओवरराइडिंग को सुरक्षा कारणों से हटा दिया गया है एप्लिकेशन मैलवेयर होने के मामले में उपयोगकर्ता से बाहर निकलें।

प्लस, उपयोगकर्ता वास्तव में एप्लिकेशन से दूर जाने की अनुमति देने के लिए यह वास्तव में अच्छा अभ्यास नहीं है। लेकिन, चूंकि आप लॉक स्क्रीन एप्लिकेशन बना रहे हैं, तो आप गतिविधि को लॉन्चर के रूप में घोषित कर सकते हैं, ताकि जब होमबटन दबाया जाए तो यह आपके एप्लिकेशन को फिर से शुरू कर देगा और वहां ही रहेगा (उपयोगकर्ता कुछ भी नहीं देखेंगे स्क्रीन में मामूली झिलमिलाहट)।

संपादित करें # 1: यहां another workaround है, जो आपकी आवश्यकताओं के अनुरूप है।

संपादित करें # 2: बस this. पर इसका परीक्षण नहीं हुआ है। लेकिन थोड़े आशाजनक लग रहा है। सुनिश्चित नहीं है कि यह काम करेगा, लेकिन आप इसे आज़मा सकते हैं।

+1

पूरी तरह से @ swayam – dhams

+1

@ सेवम के साथ सहमत हो गया, लॉन्चर के रूप में गतिविधि की घोषणा करने से उपयोगकर्ता को डिफ़ॉल्ट लॉन्चर चुनने के लिए संकेत मिलेगा, और इसके बाद यह लॉन्चर कॉन्फ़िगरेशन को भी गड़बड़ कर देगा। –

+0

मैं आपसे सहमत हूं कि उपयोगकर्ता को चुनने के लिए कहा जाएगा। लेकिन, उसे सिर्फ एक बार चुनाव करने की जरूरत है और इसे अपनी वरीयता के रूप में सहेजा जाता है।यह कुछ धारणा है जिसे हमें बनाना होगा, विशेष रूप से इस तथ्य को देखते हुए कि उपयोगकर्ता लॉक स्क्रीन ऐप को इरादे के अनुसार काम करना चाहता है। और, जहां तक ​​"लॉन्चर कॉन्फ़िगरेशन को गड़बड़ाना" * संबंधित है, क्या आप कृपया विस्तृत कर सकते हैं, क्योंकि मैंने कभी इस तरह के किसी मुद्दे को नहीं देखा है? – Swayam

9

वहाँ कुछ चीजें है कि आप की कोशिश कर सकते हैं:

  • आप अपनी गतिविधि एकल शीर्ष सेट कर सकते हैं, और शीर्ष झंडा जब onPause() विधि कहा जाता है करने के लिए इसे फिर से शुरू स्पष्ट साथ, इस घर बटन ब्लॉक और होगा अन्य गतिविधियों को खोलना

  • अपनी गतिविधि शुरू करने के लिए BOOT_COMPLETED प्रसारण सुनें - यह आपको उन उपयोगकर्ताओं से सुरक्षित रखेगा जो इसे रीबूट करने के लिए डिवाइस से बैटरी ले लेंगे।

  • Alarmmanager जोड़ें जो आपका ऐप जिंदा है और यदि यह नहीं है, तो हर सेकेंड का परीक्षण करेगा, फिर इसे शुरू करें - यह आपको उपयोगकर्ताओं से बचाएगा कि कुछ आपके ऐप को बंद करने में कैसे कामयाब रहे (बाहरी उपकरण के साथ हो सकते हैं)।

ऐसा करें और कोई भी अपने ऐप से बाहर निकलते करने में सक्षम हो

+0

वे कुछ अद्भुत अंक हैं दोस्त! मैंने अपने अनुप्रयोगों में से एक में Boot_completed प्रसारण का उपयोग किया था, लेकिन 'अलार्ममेनगर' का उपयोग करने के लिए शुद्ध प्रतिभा है! +1 !! – Swayam

+1

मैंने पहली बार कोशिश की, मेरे लिए काम नहीं कर रहा ... :(@llya_Gazman –

1

मुझे लगता है कि एंड्रॉइड ऐप के भीतर से होम बटन को पहचानना और/या अवरोध करना असंभव है। यह दुर्भावनापूर्ण ऐप्स को रोकने के लिए सिस्टम में बनाया गया है जिसे बाहर नहीं किया जा सकता है।

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