2012-09-24 8 views
5

मेरी जावा आवेदन में मैं जब मैं एंड्रॉयड 2.3 (स्तर 10) यह संकलित करता है तथा ठीक काम करता है के लिए इसे बनाने के लिए इस कोडएंड्रॉइड एप्लिकेशन में यह 4 लाइन जावा कोड क्या है?

@Override 
public void onAttachedToWindow() 
    { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 
    super.onAttachedToWindow(); 
    } 

है। लेकिन जब मैं के लिए इसे बनाने एंड्रॉयड 4.0 (स्तर 15) यह संकलित करता है तथा मुझे रन टाइम पर दुर्घटना और निम्न त्रुटि देता है

07-16 14:00:03.090: E/AndroidRuntime(29487): FATAL EXCEPTION: main 
07-16 14:00:03.090: E/AndroidRuntime(29487): java.lang.IllegalArgumentException: Window type can not be changed after the window is added. 

जब मैं इस लाइन टिप्पणी और निर्माण यह ठीक काम करता है और कोई समस्या नहीं ..

//this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 

इसलिए मुझे यह खुशी क्यों नहीं मिल रही है और इस कोड का क्या अर्थ है?

संपादित करें: कुछ संदर्भ यहाँ

when I run app on my phone.The version is android 4.0.3

toddler safe app on android

+0

इसका सीधा सा अर्थ है जब अपनी गतिविधि से कम 14 ब्लैकबेरी –

+0

आप सेट targetSDK में onDisplay तरह अग्रभाग में आता है। फिर यह काम करेगा http://stackoverflow.com/a/32587231/3496570 – Nepster

उत्तर

9
@Override 
public void onAttachedToWindow() 
    { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 
    super.onAttachedToWindow(); 
    } 

एंड्रॉयड में अक्षम होम बटन के लिए इस्तेमाल किया जाता है, लेकिन

इस सुरक्षा दोष एंड्रॉयड के नए संस्करण में तय किया गया है तो यह आईसीएस और जेली बीन में काम नहीं करेगा ... !!

2
@Override  
public void onWindowFocusChanged(boolean hasFocus) { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);  
    super.onWindowFocusChanged(hasFocus); 
} 

हैं मैं windowAttached साथ कुछ समस्या थी और साथ ही, बजाय windowFocusChanged उपयोग करके देखें।

+7

यह काम नहीं करता है। एंड्रॉइड 4.1 के साथ गैलेक्सी एस 3 पर परीक्षण किया –

4

मैं इस मुद्दे सुपर कॉल करने से पहले

this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 
onCreate में

डाल समाधान कर लिया है।

protected void onCreate(Bundle savedInstanceState) { 

     this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 

     super.onCreate(savedInstanceState); 
} 

Saludos desde मेडेलिन

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