Numarayı telefon numarası görüntülenirken nasıl açabilirim?


193

Telefon numarasını aramama gerek yok, sadece görüntülenen telefon numarasıyla birlikte çeviriciyi açmam gerekiyor. IntentBunu başarmak için ne kullanmalıyım?

Yanıtlar:


532

Bunu başarmanın iki yolu.

1) Numara çeviriciyi kullanıcı etkileşimi olmadan kodla başlatmanız gerekir.

İhtiyacınız var Action_Dial,

aşağıdaki kodu kullanın, belirtilen numara ile Dialer açılacak

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

'Tel:' öneki gereklidir , aksi takdirde şu istisna atılır: java.lang.IllegalStateException: Etkinliğin yöntemi yürütülemedi.

Action_Dial herhangi bir izin gerektirmez.

Aramayı, kullanıcının etkileşimi olmadan doğrudan başlatmak istiyorsanız , işlemi kullanabilirsiniz Intent.ACTION_CALL. Bu durumda, AndroidManifest.xml dosyasına aşağıdaki izni eklemelisiniz:

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

2) Kullanıcının Phone_Number dizesini tıklaması ve aramayı başlatması gerekir.

android:autoLink="phone" 

Aşağıdaki özellikte TextView kullanmanız gerekir.

android: autoLink = "telefon" android: linksClickable = "true" bir textView özelliği

Bu şekilde niyet kullanmanıza veya izin almanıza gerek yoktur.


9
Bu harika ve Intent.ACTION_CALL'den farklı olarak hemen
aramıyor

ACTION_DIAL izin gerektiriyor mu yoksa yalnızca ACCESS_CALL gerekli mi?
Marc Plano-Lesay

1
Bu , Danimarka'daki telefon numaralarıyla da çalışır :) Numaradan önce +45 eklemenize gerek yoktur . Sadece telefon numarasını ayrıştırma iyi çalışıyor
ymerdrengene

1
Numara çeviriciyi yeni niyetle açtıktan sonra geri düğmesiyle sorun yaşadım. Sadece 3 geri düğmesine basarak uygulamama geri dönebilirim (bana açmadım çeviricinin birkaç ekranını gösterir - çeviricinin kendisi, yeni kişi ekranı, sık kullanılanlar oluştur). Birisi sadece 1 geri düğmesine basarak uygulamaya nasıl döneceğini biliyor mu?
kashlo

2
2012 ... Eski güzel günler. Politik olarak doğru 2018, büyük şirketler kullanıcı verileri satıyor ve uygulamalarımızın sadece SMS ve Telefon çağrılarını desteklememek için Android bürokrasisi ile uğraşması gerekiyor.
Josh

52

Cevabın oldukça geç, ama TextViewiçinde telefon numarasını gösteren bir varsa , o zaman hiç niyet ile uğraşmak zorunda değilsiniz, sadece XML özniteliğini kullanabilirsiniz android:autoLink="phone"ve işletim sistemi otomatik olarak bir ACTION_DIALniyet başlatacaktır .


Çok hızlı bir yaklaşım!
Taslim Oseni

7

Tamam, bu sorunun cevabı çok geç olacak. Ama burada Kotlin'de yapmak istiyorsanız sadece bir örnek var .

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

Birine yardımcı olabileceğini düşündüm.


2

@Ashishduh yukarıda belirtildiği gibi, kullanmak android:autoLink="phoneda iyi bir çözümdür. Ancak bu seçenek bir dezavantaj ile birlikte gelir, tüm telefon numarası uzunluklarıyla çalışmaz. Örneğin, 11 numaradan oluşan bir telefon numarası bu seçenekle çalışmaz. Çözüm, telefon numaralarınızı ülke koduyla önceden eklemektir.

Misal:

08034448845 çalışmayacak

ama +2348034448845olacak


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

Çeviriciye doğrudan EditText etiketi atanan numarayı bu şekilde açabilirsiniz.


1

Manifest'te izin ekle:

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

Yap düğmesi veya herhangi bir widget örneği: 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);

    }
});

bu cevap doğru ama bu cevap soru ile eşleşmiyor.
Ay
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.