मैं डायलर को फोन नंबर के साथ कैसे खोल सकता हूं?


193

मुझे फोन नंबर पर कॉल करने की आवश्यकता नहीं है, मुझे पहले से प्रदर्शित फोन नंबर के साथ डायल करने की आवश्यकता है। Intentइसे प्राप्त करने के लिए मुझे क्या उपयोग करना चाहिए?

जवाबों:


531

इसे प्राप्त करने के दो तरीके।

1) कोड के माध्यम से डायलर शुरू करने की आवश्यकता है, उपयोगकर्ता बातचीत के बिना।

आप की जरूरत है Action_Dial,

नीचे दिए गए कोड का उपयोग करें यह निर्दिष्ट संख्या के साथ डायलर को खोल देगा

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent); 

'Tel:' उपसर्ग की आवश्यकता है , इसके अलावा निम्नलिखित अपवाद को फेंक दिया जाएगा: java.lang.IllegalStateException: गतिविधि की विधि निष्पादित नहीं कर सका।

Action_Dial को किसी भी अनुमति की आवश्यकता नहीं है।

यदि आप उपयोगकर्ता की सहभागिता के बिना सीधे कॉल शुरू करना चाहते हैं , तो आप कार्रवाई का उपयोग कर सकते हैं Intent.ACTION_CALL। इस स्थिति में, आपको अपने AndroidManifest.xml में निम्नलिखित अनुमति देनी होगी:

<uses-permission android:name="android.permission.CALL_PHONE" />

2) Phone_Number स्ट्रिंग पर क्लिक करने और कॉल शुरू करने के लिए उपयोगकर्ता की आवश्यकता है।

android:autoLink="phone" 

आपको नीचे की संपत्ति के साथ TextView का उपयोग करने की आवश्यकता है।

android: autoLink = "phone" android: linksClickable = "true" एक textView गुण है

आपको इस तरह से इरादे का उपयोग करने या अनुमति प्राप्त करने की आवश्यकता नहीं है।


9
यह बहुत अच्छा है और यह Intent.ACTION_CALL की तुलना में अलग-अलग है, क्योंकि यह तुरंत कॉल नहीं करता है
Amt87

क्या ACTION_DIAL को अनुमति की आवश्यकता है, या केवल ACCESS_CALL करता है?
मार्क प्लानो-लेसे

1
यह डेनमार्क से फ़ोन नंबर के साथ भी काम करता है :) आपको नंबर से पहले +45 जोड़ने की आवश्यकता नहीं है । यह ठीक काम करता है फोन नंबर पार्सिंग
ymerdrengene

1
नए इरादे में डायलर खोलने के बाद Ive को बैक बटन की समस्या हुई। मैं केवल 3 बैक बटन प्रेस में अपने आवेदन पर वापस आ सकता हूं (यह मुझे डायलर की कई स्क्रीन दिखाता है जो मैंने खुली नहीं थी - डायलर खुद, नई संपर्क स्क्रीन, पसंदीदा बनाएं)। क्या कोई जानता है कि केवल 1 बैक बटन प्रेस के साथ ऐप कैसे प्राप्त करें?
kashlo

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

52

उत्तर पर बहुत देर हो चुकी है, लेकिन अगर आपके पास एक TextViewऐसा फोन है जिसमें आप फोन नंबर दिखा रहे हैं, तो आपको बिल्कुल भी इंटेंट से निपटने की जरूरत नहीं है, आप बस XML विशेषता का उपयोग कर सकते हैं android:autoLink="phone"और ओएस स्वचालित रूप से एक ACTION_DIALइंटेंट शुरू कर देगा ।


बहुत तेज़ दृष्टिकोण!
तस्लीम ओसेनी

7

ठीक है, यह इस प्रश्न का बहुत देर से जवाब देने वाला है। लेकिन यहाँ सिर्फ एक नमूना है अगर आप इसे कोटलिन में करना चाहते हैं ।

val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:<number>")
startActivity(intent)

सोचा कि यह किसी की मदद कर सकता है।


2

जैसा कि ऊपर वर्णित @ashishduh, का उपयोग android:autoLink="phoneकरना भी एक अच्छा समाधान है। लेकिन यह विकल्प एक खामी के साथ आता है, यह सभी फोन नंबर की लंबाई के साथ काम नहीं करता है। उदाहरण के लिए, 11 नंबर का फोन इस विकल्प के साथ काम नहीं करेगा। समाधान देश कोड के साथ अपने फोन नंबरों को उपसर्ग करना है।

उदाहरण:

08034448845 काम नहीं करेगा

लेकिन +2348034448845होगा


1
<TextView
 android:id="@+id/phoneNumber"
 android:autoLink="phone"
 android:linksClickable="true"
 android:text="+91 22 2222 2222"
 />

यह है कि आप सीधे डायलर पर EditText लेबल असाइन किए गए नंबर को कैसे खोल सकते हैं।


1

घोषणा में अनुमति जोड़ें:

<uses-permission android:name="android.permission.CALL_PHONE" />

बटन या कोई विजेट उदाहरण बनाएं: btnCall

btnCall.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent callIntent = new Intent(Intent.ACTION_DIAL);
        callIntent.setData(Uri.parse("tel: +98990*******");
        startActivity(callIntent);

    }
});

यह उत्तर सही है लेकिन यह उत्तर प्रश्न से मेल नहीं खाता है।
चन्द्र
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.