Bagaimana saya bisa mendapatkan nomor telepon perangkat yang menjalankan aplikasi Android saya secara terprogram?
443
Bagaimana saya bisa mendapatkan nomor telepon perangkat yang menjalankan aplikasi Android saya secara terprogram?
Jawaban:
Kode:
Izin yang Dibutuhkan:
Peringatan:
Menurut komentar yang sangat terangkat, ada beberapa peringatan yang harus diperhatikan. Ini dapat mengembalikan
null
atau""
bahkan"???????"
, dan dapat mengembalikan nomor telepon basi yang tidak lagi berlaku. Jika Anda menginginkan sesuatu yang secara unik mengidentifikasi perangkat, Anda harus menggunakannyagetDeviceId()
.sumber
null
. Meski begitu, saya tidak mengetahui jawaban yang lebih baik.Tidak ada solusi yang dijamin untuk masalah ini karena nomor telepon tidak secara fisik disimpan di semua kartu SIM, atau disiarkan dari jaringan ke telepon. Ini terutama benar di beberapa negara yang memerlukan verifikasi alamat fisik, dengan penugasan nomor hanya terjadi sesudahnya. Penetapan nomor telepon terjadi di jaringan - dan dapat diubah tanpa mengubah kartu SIM atau perangkat (mis. Ini adalah cara porting didukung).
Saya tahu ini menyakitkan, tetapi kemungkinan besar solusi terbaik adalah meminta pengguna untuk memasukkan nomor teleponnya satu kali dan menyimpannya.
sumber
Pembaruan: Jawaban ini tidak lagi tersedia karena Whatsapp telah berhenti mengekspos nomor telepon sebagai nama akun, silakan abaikan jawaban ini.
Sebenarnya ada solusi alternatif yang mungkin ingin Anda pertimbangkan, jika Anda tidak bisa mendapatkannya melalui layanan telepon.
Mulai hari ini, Anda dapat mengandalkan aplikasi besar Whatsapp lainnya, menggunakan
AccountManager
. Jutaan perangkat memasang aplikasi ini dan jika Anda tidak dapat memperoleh nomor teleponnyaTelephonyManager
, Anda dapat mencobanya.Izin:
Kode:
Periksa
actype
akun WhatsAppTentu saja Anda mungkin tidak mendapatkannya jika pengguna tidak menginstal WhatsApp, tetapi patut untuk dicoba. Dan ingat Anda harus selalu meminta konfirmasi kepada pengguna.
sumber
Seperti yang diposting di blog saya jawaban sebelumnya
Gunakan kode di bawah ini:
Di AndroidManifest.xml, berikan izin berikut:
Tapi ingat, kode ini tidak selalu berfungsi, karena nomor Ponsel tergantung pada Kartu SIM dan operator Jaringan / operator ponsel.
Juga, coba periksa di Telepon -> Pengaturan -> Tentang -> Identitas Telepon , Jika Anda dapat melihat Nomor di sana, kemungkinan mendapatkan nomor telepon dari kode di atas lebih tinggi. Jika Anda tidak dapat melihat nomor telepon di pengaturan, maka Anda tidak akan bisa mendapatkan kode ini!
Solusi yang disarankan:
Lakukan 4 langkah di atas sebagai aktivitas satu kali selama peluncuran pertama aplikasi. Kemudian, kapan pun nomor telepon diperlukan, gunakan nilai yang tersedia dalam preferensi bersama.
sumber
Jadi begitulah cara Anda meminta nomor telepon melalui Play Services API tanpa izin dan peretasan. Sumber dan Contoh lengkap .
Di build.gradle Anda (versi 10.2.x dan lebih tinggi diperlukan):
Dalam aktivitas Anda (kode disederhanakan):
Ini akan menghasilkan dialog seperti ini:
sumber
Kode diambil dari http://www.androidsnippets.com/get-my-phone-number
sumber
Ada api Android baru yang memungkinkan pengguna untuk memilih nomor telepon mereka tanpa perlu izin. Lihatlah: https://android-developers.googleblog.com/2017/10/effective-phone-number-verification.html
sumber
Hanya ingin menambahkan sedikit di sini untuk penjelasan di atas dalam jawaban di atas. Yang akan menghemat waktu untuk orang lain juga.
Dalam kasus saya, metode ini tidak mengembalikan nomor ponsel apa pun, string kosong dikembalikan. Itu karena kasus saya telah porting nomor saya di sim baru. Jadi jika saya masuk ke Pengaturan> Tentang Telepon> Status> Nomor Telepon Saya ini menunjukkan kepada saya "Tidak Diketahui".
sumber
Terkadang, kode di bawah ini mengembalikan
null
atau string kosong.Dengan izin di bawah ini
Ada cara lain Anda akan bisa mendapatkan nomor telepon Anda, saya belum menguji ini pada beberapa perangkat tetapi kode di atas tidak berfungsi setiap saat.
Coba kode di bawah ini:
Anda perlu menambahkan dua izin ini.
Semoga ini bisa membantu, Terima kasih!
sumber
String s1
akan menjadi nomor telepon.Ini adalah jawaban yang lebih sederhana:
sumber
Pertama-tama mendapatkan nomor ponsel pengguna adalah bertentangan dengan kebijakan Etis, sebelumnya itu mungkin tetapi sekarang sesuai penelitian saya tidak ada solusi yang solid untuk ini, Dengan menggunakan beberapa kode dimungkinkan untuk mendapatkan nomor ponsel tetapi tidak ada jaminan mungkin itu akan berfungsi hanya di beberapa perangkat. Setelah banyak penelitian saya menemukan hanya tiga solusi tetapi mereka tidak berfungsi di semua perangkat.
Ada alasan berikut mengapa kita tidak mendapatkannya.
1. Perangkat Android dan Kartu SIM baru tidak menyimpan nomor ponsel jika nomor ponsel tidak tersedia di perangkat dan dalam SIM lalu bagaimana mungkin untuk mendapatkan nomor, jika ada kartu SIM lama yang memiliki nomor ponsel maka menggunakan Telephony manager kita bisa mendapatkan nomor lainnya bijaksana itu akan mengembalikan "null" atau "" atau "??????"
sumber
TelephonyManager
bukan solusi yang tepat, karena dalam beberapa kasus angkanya tidak disimpan di SIM. Saya sarankan Anda menggunakan preferensi bersama untuk menyimpan nomor telepon pengguna untuk pertama kalinya aplikasi dibuka dan nomor itu akan digunakan kapan pun Anda butuhkan.sumber
Berikut adalah kombinasi dari solusi yang saya temukan (contoh proyek di sini , jika Anda ingin juga memeriksa isi-otomatis):
nyata
build.gradle
MainActivity.kt
sumber
Sedikit kontribusi. Dalam kasus saya, kode meluncurkan pengecualian kesalahan. Saya perlu membuat anotasi agar kode dapat dijalankan dan memperbaiki masalah itu. Di sini saya membiarkan kode ini.
sumber
Meskipun dimungkinkan untuk memiliki beberapa akun voicemail, saat menelepon dari nomor Anda sendiri, operator mengarahkan Anda ke voicemail. Jadi,
TelephonyManager.getVoiceMailNumber()
atauTelephonyManager.getCompleteVoiceMailNumber()
, tergantung pada rasa yang Anda butuhkan.Semoga ini membantu.
sumber
Tambahkan ketergantungan ini:
implementation 'com.google.android.gms:play-services-auth:18.0.0'
Untuk mengambil daftar nomor telepon, gunakan ini:
Setelah mengetuk dialog layanan putar:
sumber
ketika bekerja pada aplikasi keamanan yang diperlukan untuk mendapatkan nomor telepon siapa yang pernah ponsel saya dapat miliki, saya harus melakukan ini; 1. terima Boot selesai dan kemudian coba dapatkan Line1_Number dari telephonyManager yang mengembalikan hasil string. 2. membandingkan hasil String dengan nomor telepon saya sendiri dan jika mereka tidak cocok atau string mengembalikan nol maka, 3. diam-diam mengirim SMS yang berisi hasil string ditambah tanda khusus ke nomor kantor saya. 4. jika pengiriman pesan gagal, mulai layanan dan terus mencoba setelah setiap jam sampai niat tertunda SMS terkirim berhasil kembali. Dengan langkah ini saya bisa mendapatkan nomor orang yang menggunakan ponsel saya yang hilang. tidak masalah jika orang tersebut ditagih.
sumber