Bagaimana cara membuka dialer dengan nomor telepon yang ditampilkan?

193

Saya tidak perlu memanggil nomor telepon, saya hanya perlu dialer untuk membuka dengan nomor telepon yang sudah ditampilkan. Apa yang Intentharus saya gunakan untuk mencapai ini?

Nik
sumber

Jawaban:

532

Dua cara untuk mencapainya.

1) Perlu memulai dialer melalui kode, tanpa interaksi pengguna.

Kamu membutuhkan Action_Dial,

gunakan kode di bawah ini akan membuka Dialer dengan nomor yang ditentukan

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

Awalan 'tel:' diperlukan , selain itu pengecualian berikut akan dilemparkan: java.lang.IllegalStateException: Tidak dapat menjalankan metode aktivitas.

Action_Dial tidak memerlukan izin apa pun.

Jika Anda ingin memulai panggilan secara langsung tanpa interaksi pengguna , Anda dapat menggunakan tindakan Intent.ACTION_CALL. Dalam hal ini, Anda harus menambahkan izin berikut di AndroidManifest.xml Anda:

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

2) Perlu pengguna untuk mengklik string Phone_Number dan memulai panggilan.

android:autoLink="phone" 

Anda perlu menggunakan TextView dengan properti di bawah ini.

android: autoLink = "phone" android: linksClickable = "true" properti textView

Anda tidak perlu menggunakan niat atau untuk mendapatkan izin melalui cara ini.

AAnkit
sumber
9
Itu hebat dan berbeda dari Intent.ACTION_CALL oleh karena itu tidak segera menelepon
Amt87
Apakah ACTION_DIAL memerlukan izin, atau hanya ACCESS_CALL yang melakukannya?
Marc Plano-Lesay
1
Ini berfungsi dengan nomor telepon dari Denmark juga :) Anda tidak perlu menambahkan +45 sebelum nomor itu. Ini berfungsi dengan baik hanya menguraikan nomor telepon
ymerdrengene
1
Ive punya masalah dengan tombol kembali setelah membuka dialer di maksud baru. Saya dapat kembali ke aplikasi saya hanya dalam 3 tombol tekan kembali (ini menunjukkan kepada saya beberapa layar dialer yang tidak saya buka - dialer itu sendiri, buat layar kontak baru, favorit). Apakah ada yang tahu cara kembali ke aplikasi hanya dengan 1 tekan tombol kembali?
kashlo
2
2012 ... Selamat tua. Secara politis benar pada 2018, perusahaan besar menjual data pengguna dan aplikasi kami harus berurusan dengan birokrasi Android hanya untuk TIDAK mendukung SMS dan panggilan telepon.
Josh
52

Cukup terlambat pada jawabannya, tetapi jika Anda memiliki TextViewnomor telepon yang Anda tunjukkan, maka Anda tidak perlu berurusan dengan maksud sama sekali, Anda cukup menggunakan atribut XML android:autoLink="phone"dan OS akan secara otomatis memulai ACTION_DIALIntent.

ashishduh
sumber
Pendekatan yang sangat cepat!
Taslim Oseni
7

Oke, itu akan menjadi jawaban yang sangat terlambat untuk pertanyaan ini. Tapi ini hanya satu contoh jika Anda ingin melakukannya di Kotlin .

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

Kupikir itu mungkin membantu seseorang.

gprathour
sumber
2

Seperti @ashishduh yang disebutkan di atas, menggunakan android:autoLink="phonejuga merupakan solusi yang baik. Tetapi opsi ini hadir dengan satu kelemahan, tidak bekerja dengan semua panjang nomor telepon. Misalnya, nomor telepon 11 nomor tidak akan berfungsi dengan opsi ini. Solusinya adalah dengan awalan nomor telepon Anda dengan kode negara.

Contoh:

08034448845 tidak akan bekerja

tapi +2348034448845akan

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

Ini adalah bagaimana Anda dapat membuka nomor yang diberikan label EditText pada dialer secara langsung.

saurabh yadav
sumber
1

Tambahkan izin dalam manifes:

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

Buat tombol atau contoh widget apa pun: 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);

    }
});
Pouria Hemati
sumber
jawaban ini benar tetapi jawaban ini tidak cocok dengan pertanyaan.
bulan