2010-01-27 29 views
17

मैं सोच रहा था कि कोई भी बता सकता है कि मूल एंड्रॉइड स्क्रीन पर एक संवाद स्क्रीन कैसे पॉप अप करें?एंड्रॉइड - मूल स्क्रीन पर एक संवाद कैसे प्रदर्शित करें?

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

मुझे पता है कि कुछ लोग कहेंगे कि मुझे इसके बजाय अधिसूचनाओं का उपयोग करना चाहिए, लेकिन मुझे इसके बारे में पता है और यह जिस तरह से काम करना चाहिए, मुझे कॉल फंसने पर एक संवाद पॉप अप करने में सक्षम होना चाहिए।

यह मेरा संवाद कोड अब तक

AlertDialog LDialog = new AlertDialog.Builder(context) 
    .setTitle("Call Blocked") 
    .setMessage("Call Blocked, reroute call?") 
    .setPositiveButton("ok", null).create(); 
     LDialog.show(); 

मुझे लगता है मैं किसी भी तरह संदर्भ डायलर स्क्रीन की है कि होने के लिए पाने के लिए है?

क्या कोई भी मदद और सहायता या ट्यूटोरियल के लिंक प्रदान कर सकता है?

अग्रिम

उत्तर

56

अपने आवेदन के लिए धन्यवाद मैं Dialog विषय के साथ एक गतिविधि का इस्तेमाल किया। यदि आपका पॉपअप अपने मुख्य आवेदन से अलग है

<activity android:name="PopupActivity" 
    android:launchMode="singleInstance" android:excludeFromRecents="true" 
    android:taskAffinity="" android:theme="@android:style/Theme.Dialog" /> 
  • उपयोग launcheMode="singleInstance" और taskAffinity="": आप मैनिफ़ेस्ट फ़ाइल में विषय घोषणा कर सकते हैं। अन्यथा उपयोगकर्ता बैक बटन पर क्लिक कर सकता है और आपके आवेदन की पिछली गतिविधि पर वापस आ सकता है।
  • excludeFromRecents="true" अपने पॉपअप से बचने के लिए हाल ही के कार्य (लंबी प्रेस घर)
  • theme="@android:style/Theme.Dialog" में प्रदर्शित करने के संवाद विषय स्थापित करने के लिए।
+3

धन्यवाद थॉमस, यह एक उत्कृष्ट समाधान है –

+0

उत्कृष्ट समाधान, धन्यवाद! मुझे बहुत समय बचाया! – mDroidd

+0

मैं सचमुच आपको प्यार करता हूँ tbruyelle! कार्य को जोड़ना एफ़िनिटी = "" समस्या को हल किया जो मुझे इतने लंबे समय से परेशान कर रहा था! – Daksh

4

कैसे कोड

मैं कैसे इन झंडे प्रोग्राम के रूप में स्थापित करने के लिए की स्पष्ट जानकारी दिए नहीं देखा है में launchMode = singleTask के बराबर प्राप्त करने के लिए, इसलिए मैं अपने परिणाम यहाँ शामिल होंगे। tldr: आपको FLAG_ACTIVITY_NEW_TASK और FLAG_ACTIVITY_MULTIPLE_TASK सेट करना होगा।

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

स्पष्ट रूप से किसी को अन्य ऐप्स के शीर्ष पर एक संवाद प्रदर्शित करने के लिए उचित होने पर जिम्मेदार होना चाहिए।

public class MyReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

// you have to set these flags here where you receive the broadcast 
// NOT in the code where you created your pendingIntent 
    Intent scheduledIntent = new Intent(context, AlertAlarmActivity.class); 
    scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
    context.startActivity(scheduledIntent); 
संबंधित मुद्दे