Programlı olarak nasıl telefon araması yapılır?


123

Bir aktiviteye bir paketle aramak için numara veriyorum

ve sonra, böyle bir aktivitede, bu numarayı aramak için bir düğmem var, bu kod:

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

Bir sorun var çünkü düğmeye bastığımda hiçbir şey olmuyor ...

Neyi yanlış yapıyorum?

PD: Android 1.5 uyumlu proje kullanıyorum ... belki telefon görüşmesi 1.5 ile uyumsuzdur?


pls logcat o / p veya ayrıntılı ur hata ayrıntılarını yapıştırın
— chikka.anddev

Yanıtlar:


259

StartActivity'yi çağırmayı unuttunuz. Şöyle görünmeli:

Intent intent = new Intent(Intent.ACTION_CALL);

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

Kendi başına bir niyet, bir şeyi tanımlayan basit bir nesnedir. Hiçbir şey yapmaz.

Manifestinize ilgili izni eklemeyi unutmayın:

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

Merhaba @Lior, bu cihazın dual-sim olması durumunda nasıl yapabilirim. Belirli bir sim üzerinden arama yapmak mümkün mü?
— Dinash

3
@Dinash: Zaten yanıtlanmış şu soruya bir göz atın: stackoverflow.com/questions/13231962/call-from-second-sim
— Lior 13

Aynı kodu kullandım ancak Galaxy S7 kenarında çalışmıyorum. Bu benim kodum Intent intentCall = new Intent (Intent.ACTION_CALL); String uri = "tel:" + number.trim (); intentCall.setData (Uri.parse (URI)); if (ActivityCompat.checkSelfPermission (getApplicationContext (), Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {startActivity (intentCall); }
— AngelJanniee

Bu simülatör, fiziksel cihaz olmadan arama yapmak için kullanılabilir mi
— user3754136

24

Bunu telefonumda denedim ve mükemmel çalışıyor.

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

Bu izni manifest dosyasına ekleyin.

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

1
sayı 1689, 3,2,1,1 gibidir. Sorun alıyorum, sadece 1689 olacak ... Lütfen aynı çözüm için bir çözümünüz varsa bana yardım edin.
— Teraiya Mayur

@TeraiyaMayur önce sayısal olmayan karakterleri kaldırabilirsiniz. Eğer telefon numarasına sahip Yani olarak String number = "1689,,3,2,1,1yapmaknubmer = "tel:" + number.replaceAll("[^0-9]", "");
— Walk of

@Walk, gibi özel sembollerle aramak istediğimiz bir problemdir ,*. Rakamlar arasında olmalılar. Bir emülatörde doğru çalışır, ancak bir cihazda ek semboller ve rakamlar bırakır.
— CoolMind

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

birden çok sıralı çağrı için

Bu, DTMF çağrı sistemleri için kullanılır. Çağrı kesilirse, numaralar arasında daha fazla "" geçirmeniz gerekir.


Dwivedi Ji: sayı 1689,, 3,2,1,1 gibidir. Sorun alıyorum, sadece 1689 olacak ... Lütfen aynı çözüm için bir çözümünüz varsa bana yardım edin.
— Teraiya Mayur

@TeraiyaMayur, IVRS çağrı sistemine bağlıdır. Benim için iş, çünkü benim yok olma desteğimi erken yanıt alıyorum.
— Dwivedi Ji

Evet haklısınız, ayrıca uygun bir IVR numarası alıyorum ve iyi çalışıyor. teşekkürler
— Teraiya Mayur



2

Burada size faaliyetinizden nasıl telefon görüşmesi yapabileceğinizi göstereceğim. Bir arama yapmak için bu kodu uygulamanıza yazmanız gerekir.

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
@Astor bunu çok net bir şekilde tanımladım, ve bununla zaten puanlar aldım, bu da cevabımın bazı insanlar için diğerinden daha iyi olduğu anlamına geliyor.
— Pir Fahim Shah

2

Bu izin gerektirmez.

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

Veya

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

Ancak bir diyalog daha gösterir (telefonu sadece bir kez mi yoksa her zaman mı aramak istediğinizi sorar). Bu nedenle ACTION_CALL, bir izinle kullanmak daha iyi olacaktır (bkz. İptal edilmiş android.permission.CALL_PHONE izni ).


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

Kotlin'de arayan varsa

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

Diğer bazı çözümler gibi, android.permission.CALL_PHONEizin gerektirir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.