2012-03-11 7 views
11

हनीकोम्ब में मैं TYPE_SYSTEM_OVERLAY के साथ एक प्रणाली ओवरले बनाएँ और FLAG_WATCH_OUTSIDE_TOUCH साथ छूता प्राप्त करने में सक्षम था।TYPE_SYSTEM_OVERLAY

अब आईसीएस ने कुछ बदल दिया है। मैं अभी भी सिस्टम ओवरले बना सकता हूं, लेकिन मुझे स्पर्श नहीं मिल सकता है।

अब, मैं इसे TYPE_SYSTEM_ALERT के साथ बनाने में सक्षम हूं और स्पर्श प्राप्त कर सकता हूं, लेकिन यह सिर्फ स्पर्शियों को पकड़ता है, और उन्हें हनीकॉम में नहीं गुजरता है।

कोई विचार है?

दया

उत्तर

7

जो कुछ भी आप वर्णन करते हैं वह सत्य है। यह संभवतः सुरक्षा को मजबूत करने के लिए है, क्योंकि पूर्व व्यवहार टैपजैकिंग हमलों का स्रोत था। मैंने हाल ही में इस बदलाव के बारे में a blog post लिखा था।

किसी भी विचार है?

उनमें से या तो उपयोग न करें।

+0

मुझे अभी एक ऐप मिला है जो अभी भी आईसीएस, स्वाइपपैड में करता है। यह स्क्रीन के बीच करने के लिए करने के लिए एक पूर्व निर्धारित बिंदु से हर ऐप्लिकेशन में खींचें और फिर एक ओवरले शुरू करने के लिए अनुमति देता है, तो एक तरह से –

+0

@EdwinSchriek वहाँ होना चाहिए: यह व्यवहार 'TYPE_SYSTEM_ALERT' के अनुरूप लगता है - यह उचित लगता है कि एक सिस्टम अलर्ट पर एक टैप के माध्यम से निरंतर स्पर्श घटनाओं को उस सिस्टम अलर्ट पर पहुंचाया जाएगा, न कि अंतर्निहित ऐप। – CommonsWare

+0

हम्म, मुझे लगता है कि यह तब संभव नहीं है, लेकिन मैं देख रहा हूं। धन्यवाद! , हालांकि काम करता है अच्छी तरह से कम पर http://www.jawsware.mobi/code_OverlayView/ –

23

जब LayoutParams करते नहींTYPE_SYSTEM_OVERLAY के प्रकार सेट स्थापित करने के लिए एक ओवरले दृश्य बनाने के लिए।

इसके बजाय इसे TYPE_PHONE पर सेट करें।

निम्नलिखित झंडे का उपयोग करें:

FLAG_NOT_TOUCH_MODAL

FLAG_WATCH_OUTSIDE_TOUCH

FLAG_NOT_TOUCH_MODAL < < मैं इस एक काफी महत्वपूर्ण हो पाया। इसके बिना, ओवरले और सॉफ्ट-कुंजी (घर, मेनू, आदि) पर ध्यान दिया जाता है, प्रेस नीचे दी गई गतिविधि को पास नहीं किया जाता है।

+4

FYI करें jawsware यहाँ एक पूर्ण नमूना एप्लिकेशन कि आईसीएस के लिए काम करता है एंड्रॉइड के संस्करण। कोई सुझाव? –

+3

नहीं 4.2.x पर उस में veiws में से किसी पर घटनाओं क्लिक पकड़ने के लिए सक्षम: –

+0

धन्यवाद। यह मेरे लिए काम किया - मैं था 'TYPE_SYSTEM_OVERLAY' और मैं गतिविधि में और साथ ही 'setOnClickListener' मेरी गतिविधि के ऊपर एक पॉपअप विंडो में अंतिम रूप प्राप्त करने के लिए के बजाय 'setOnTouchListener' के साथ 'FLAG_NOT_TOUCH_MODAL' और श्रोता सेट के साथ 'TYPE_PHONE' में बदल नीचे। मेरे मामले में यह ओवरलेइंग विंडो के साथ एक डिफ़ॉल्ट सिस्टम इनकमिंग कॉल अधिसूचना थी। –