प्रोग्राम को फ़ोन कॉल कैसे करें?


123

मैं एक बंडल में कॉल करने के लिए एक गतिविधि के लिए नंबर दे रहा हूं

और फिर, ऐसी गतिविधि में, मेरे पास उस नंबर पर कॉल करने के लिए एक बटन है, यह कोड है:

callButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(bundle.getString("mobilePhone")));
            }
        }); 

कुछ तो गड़बड़ है, क्योंकि जब मैं बटन दबाता हूं तो कुछ नहीं होता ...

मैं क्या गलत कर रहा हूं?

पीडी: मैं एंड्रॉइड 1.5 संगत परियोजना का उपयोग कर रहा हूं ... शायद फोन कॉल 1.5 पर असंगत है?


pls पेस्ट logcat o / p या विस्तृत ur एरर डिटेल्स
chikka.anddev

जवाबों:


259

आप startActivity को कॉल करना भूल गए। इसे ऐसा दिखना चाहिए:

Intent intent = new Intent(Intent.ACTION_CALL);

intent.setData(Uri.parse("tel:" + bundle.getString("mobilePhone")));
context.startActivity(intent);

अपने आप से एक आशय बस एक वस्तु है जो कुछ का वर्णन करता है। यह कुछ भी नहीं करता है।

अपने मैनिफ़ेस्ट में प्रासंगिक अनुमति जोड़ना न भूलें:

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

हाय @Lior मैं कैसे कर सकता है कि डिवाइस में दोहरे सिम है। क्या किसी विशेष सिम के माध्यम से कॉल करना संभव है?
दिनश

3
@ दिनेश: इस पहले से ही पूछे गए प्रश्न पर एक नज़र डालें: stackoverflow.com/questions/13231962/call-from-second-sim
Lior

मैंने एक ही कोड का उपयोग किया है, लेकिन गैलेक्सी S7 एज में काम नहीं कर रहा है। यह मेरा कोड है इरादे का इरादा = नया इरादा (इरादे। AUTION_CALL); स्ट्रिंग uri = "tel:" + number.trim (); intentCall.setData (Uri.parse (URI)); अगर (ActivityCompat.checkSelfPermission (getApplicationContext (), Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {startActivity (इरादे); }
एंजेलजैनी

क्या इस सिम्युलेटर का उपयोग भौतिक डिवाइस के बिना कॉल करने के लिए किया जा सकता है
user3754136

24

मेरे फोन पर यह कोशिश की और यह पूरी तरह से काम करता है।

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:900..." ));
startActivity(intent);

इस अनुमति को प्रकट फ़ाइल में जोड़ें।

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

1
संख्या 1689, 3,2,1,1 की तरह है। मुझे समस्या हो रही है कि यह केवल 1689 होगा..कृपया मेरी मदद करें यदि आपके पास इसके लिए कोई समाधान है।
तराईया मयूर

@TeraiyaMayur आप पहले किसी भी गैर-संख्यात्मक वर्ण को निकाल सकते हैं। तो अगर आपके पास फ़ोन नंबर String number = "1689,,3,2,1,1हैnubmer = "tel:" + number.replaceAll("[^0-9]", "");
वॉक अप

@Walk, एक समस्या यह है कि हम विशेष प्रतीकों के साथ कॉल करना चाहते हैं ,*। उन्हें अंकों के बीच होना चाहिए। एक एमुलेटर पर यह सही काम करता है, लेकिन एक डिवाइस पर यह अतिरिक्त प्रतीकों और अंकों को छोड़ देता है।
CoolMind

13
 Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+198+","+1+","+1)); 
             startActivity(callIntent);

कई ऑर्डर किए गए कॉल के लिए

इसका उपयोग DTMF कॉलिंग सिस्टम के लिए किया जाता है। यदि कॉल ड्रॉप है, तो आपको संख्याओं के बीच अधिक "," पास करना चाहिए।


द्विवेदी जी: संख्या १६, ९, ३,२,१,१ है। मुझे समस्या हो रही है कि यह केवल 1689 होगा..कृपया मेरी मदद करें यदि आपके पास इसके लिए कोई समाधान है।
तराईया मयूर

@TeraiyaMayur, यह IVRS कॉल सिस्टम पर निर्भर करता है। मेरे कॉलिंग विलुप्त होने के समर्थन के कारण इसका काम मेरे लिए शुरुआती प्रतिक्रिया है।
द्विवेदी जी

हाँ, आप सही हैं मुझे भी उचित वैध आईवीआर नंबर मिलता है और यह ठीक काम करता है। धन्यवाद
तराईया मयूर

7

चयनित उत्तर में, मार्शमैलो अनुमति की जांच नहीं है। यह मार्शमैलो 6.0 या इससे ऊपर के डिवाइस में सीधे काम नहीं करेगा।

मुझे पता है कि मुझे बहुत देर हो चुकी है, लेकिन इस प्रश्न में बड़ा वोट है इसलिए मैंने सोचा कि यह भविष्य में दूसरों की मदद करेगा।

मार्शमैलो डिवाइस में हमें कॉल के लिए रन टाइम अनुमति लेनी होगी ...

यहाँ उदाहरण के लिए मार्शमॉलो या उससे ऊपर कॉल करें।

एंड्रॉइड मार्शमॉलो 6.0 या इसके बाद के संस्करण में कॉल कैसे करें



2

यहां मैं आपको दिखाऊंगा कि आप अपनी गतिविधि से फोन कॉल कैसे कर सकते हैं। कॉल करने के लिए आपको इस कोड को अपने ऐप में डालना होगा।

try {
    Intent my_callIntent = new Intent(Intent.ACTION_CALL);
    my_callIntent.setData(Uri.parse("tel:"+phn_no));
    //here the word 'tel' is important for making a call...
    startActivity(my_callIntent);
} catch (ActivityNotFoundException e) {
    Toast.makeText(getApplicationContext(), "Error in your phone call"+e.getMessage(), Toast.LENGTH_LONG).show();
}

1
@ एस्टर मैंने इसे बहुत स्पष्ट रूप से परिभाषित किया है, मैं पहले से ही इसके माध्यम से अंक प्राप्त कर चुका हूं, जिसका अर्थ है कि मेरा उत्तर कुछ लोगों के लिए अन्य की तुलना में बेहतर है।
पीर फहीम शाह

2

इसके लिए अनुमति की आवश्यकता नहीं है।

val intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:+123456"))
startActivity(intent)

या

val intent = Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", "+123456", null))
startActivity(intent)

लेकिन यह एक और संवाद दिखाता है (यह पूछना कि क्या आप एक बार या हमेशा फोन कॉल करना चाहते हैं)। इसलिए ACTION_CALLअनुमति के साथ उपयोग करना बेहतर होगा (देखें निरस्त अनुमति android.permission.CALL_PHONE )।


0
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
   final Button button = (Button) findViewById(R.id.btn_call);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String mobileNo = "123456789";
            String uri = "tel:" + mobileNo.trim();
            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse(uri));
            startActivity(intent);
        }
    });*
 }

0

अगर किसी को कोटलिन में तलाश है

    val  uri = "tel:+800******"
    val call_customer_service = Intent(Intent.ACTION_CALL)
    call_customer_service.setData(Uri.parse(uri))
    startActivity(call_customer_service)

कुछ अन्य समाधानों की तरह इसे android.permission.CALL_PHONEअनुमति की आवश्यकता होती है।

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