Yanıtlar:
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.
Cevabın oldukça geç, ama TextView
iç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_DIAL
niyet başlatacaktır .
@Ashishduh yukarıda belirtildiği gibi, kullanmak android:autoLink="phone
da 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 +2348034448845
olacak
<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.
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);
}
});