2012-01-02 67 views
17

मैं एंड्रॉइड की आने वाली कॉल स्क्रीन पर एक अनुकूलित पॉपअप बनाना चाहता हूं जहां मैं उपयोगकर्ता के लिए जानकारी जोड़ना चाहता हूं। मैं चाहता हूं कि पॉपअप पृष्ठभूमि से किसी भी क्लिक करने योग्यता को अक्षम न करे ताकि उपयोगकर्ता अभी भी कॉल का जवाब दे सके।इनकमिंग-कॉल स्क्रीन पर पॉपअप

मुझे पता है कि यह संभव है क्योंकि कई एप्लिकेशन इसे करते हैं, उदा। MeZeZe app: enter image description here

कुछ अधिक जानकारी:

  1. एक पारदर्शी विषय है, क्योंकि यह पूर्व गतिविधि के clickability रद्द काम नहीं किया।
  2. एक टोस्ट एक विकल्प नहीं है - मैं नहीं चाहता कि यह गायब हो जाए।
  3. मुझे पता है कि कई समान धागे हैं - मैंने उनमें से कई को पढ़ा है और कोई भी मेरी विशिष्ट समस्या का उत्तर नहीं देता है।
  4. कॉल करने के बाद मुझे पहले से ही पता है कि "कुछ करने के लिए" कैसे करें, इसलिए INCOMING_CALL गतिविधि युक्तियों की कोई आवश्यकता नहीं है।

किसी भी मदद की सराहना करेंगे! धन्यवाद

+0

आप साझा कृपया सकते हैं कि कैसे आप इस काम के मिला है। आप से – png

+0

क्या आप इसके लिए अपना समाधान साझा कर सकते हैं? शायद जिथब पर? धन्यवाद! – asheinfeld

+0

जब मैं काम करता हूं, तो मैं अपना समाधान साझा करूंगा, घर से नहीं। क्षमा करें: डी – Guy

उत्तर

11

आप कॉल गतिविधि अभी भी क्लिक करने योग्य रखने के लिए, लेकिन अपने ओवरले पर किसी भी नियंत्रण नहीं चाहते, तो आप

getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); 

बुला गतिविधि की विधि OnCreate() है कि में ऐसा कर सकते हैं कॉल पर दिखाया गया।

लेआउट पैरामीटर इस के साथ साथ useable हैं:

android:windowBackground="@android:color/transparent" 
android:windowIsTranslucent="true" 
android:windowAnimationStyle="@android:style/Animation.Translucent" 
+0

धन्यवाद! थोड़ा जोड़ा के साथ काम किया। इसे आपकी प्रतिक्रिया में जोड़ा गया ताकि उत्तर पूरा हो जाएगा। और टिप्पणियों में कोड खराब है :) – Guy

+0

क्या कोई तरीका है कि मैं पूरी स्क्रीन पर नियंत्रण ले सकता हूं, इसलिए मेरे पास एक अनुकूलित आने वाली स्क्रीन है? – user1163234

+0

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

0

यह कि कुछ अतिरिक्त सुविधा के साथ मेरे लिए काम किया:

 i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
:

BroadcastReceiver में मैं आशय के लिए निम्न पंक्तियां जोड़ी

इसके अलावा, मैंने पॉपअपविंडो गतिविधि को आग लगने से पहले लगभग 1.5 सेकंड की देरी को जोड़ा, यह सुनिश्चित करने के लिए कि यह आने वाली कॉल सिस्टम स्क्रीन के बाद आ रहा है।

मालसूची फ़ाइल में मैं कहा:

<activity android:name=".PopUpIncomingCallActivity" 
      android:theme="@android:style/Theme.Translucent"> 

</activity> 

सुनिश्चित करें कि पॉपअप स्क्रीन का लेआउट पारदर्शी है बनाने के लिए।

Popupscreen लेआउट xml फ़ाइल में मैं निम्नलिखित propperties कहा:

android:windowAnimationStyle="@android:style/Animation.Translucent" 
    android:windowBackground="@android:color/transparent" 
    android:windowIsTranslucent="true" 

हालांकि इस समाधान अभी भी एक खामी है:

पॉपअप स्क्रीन आने वाली कॉल प्रणाली स्क्रीन के ऊपर दिखाई देता है और इसलिए एक उपयोगकर्ता है पॉपअप स्क्रीन को बंद करने के लिए एक क्रिया करने के लिए (जैसे एक बटन क्लिक करना, स्क्रीन दबाकर या स्क्रीन को छूना), क्योंकि आने वाली कॉल स्क्रीन नीचे रहती है और पॉपअप स्क्रीन बंद होने तक पहुंच योग्य नहीं होती है।

0

यह न केवल लॉक स्क्रीन पर गतिविधि दिखाएगा बल्कि आपकी गतिविधि स्क्रीन के पीछे आने वाली कॉल प्राप्त करने की अनुमति देगा।

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    final Window win = getWindow(); 
    win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
      | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
    win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
      | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
    win.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); 

    setContentView(R.layout.activity_main); 
संबंधित मुद्दे