Android telefonun telefon numarasını programlı olarak edinin


443

Android uygulamamı çalıştıran cihazın telefon numarasını programlı olarak nasıl alabilirim?


kendiniz girmeniz dışında bu mümkün değildir. Telefon numarası cep telefonu veya SIM tarafından değil, yalnızca şebeke tarafından
bilinir

3
@tomsoft Bir düşünün ... Facebook gibi uygulamalar telefon numaranızı otomatik olarak nasıl doğrular?
Eddie Hart

1
@tomsoft Hayır, çoğu zaman telefon numaranızı bile istemez veya eğer öyleyse kutu önceden doldurulur.
Eddie Hart

1
@tomsoft Geçen gün Facebook'a kaydoldum ve bana bir kod yazdığında numaramı istemedi. Dene. ;)
Eddie Hart

1
@EddieHart Bunu da yapın ve telefon numaram istendi. Bu nedenle, genel olarak konuşursak, bu erişilebilir değildir ve bazı operatörler bu bilgileri kurulumda ekleyebilir, ancak bu bir GMS standart özelliği değildir
tomsoft

Yanıtlar:


484

Kod:

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

Gerekli İzin:

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

Uyarılar:

Son derece değerlendirilen yorumlara göre, dikkat edilmesi gereken birkaç uyarı var. Bu, geri nullveya ""hatta geri dönebilir "???????"ve artık geçerli olmayan eski bir telefon numarası döndürebilir. Cihazı benzersiz bir şekilde tanımlayan bir şey istiyorsanız, getDeviceId()bunun yerine kullanmalısınız .


150
Aslında o kadar da mükemmel değil. Bu yöntemi en son denediğimde, eski cep telefonu numaram taşınmadan önce telefonumun sahip olduğu telefon numarasını bildirdi. Ayarlar uygulaması hala o geçersiz numarayı gösterdiği için muhtemelen devam ediyor. Ayrıca, bazı SIM'lerin bu yöntemin geri dönmesine neden olduğuna dair raporlar vardır null. Bununla birlikte, daha iyi bir cevabın farkında değilim.
CommonsWare

4
Mark haklı. Telefonu benzersiz olarak tanımlayan bir şey kullanmak niyetinde, GSM için IMEA döndürecek getDeviceId () kullanırdım.
Alex Volovoy

15
(Sanırım IMEI demek istiyorsun ...?)
ChaimKut

23
Android OS 2.2 ile Nexus One'da test ettim ve null döndürüyor
Omar Rehman

43
Geliştiriciler oy sayısını dikkate alarak bunun mükemmel bir cevap olduğunu düşünebilirler. Bu yöntemin her zaman telefon numarası vermeyeceği konusunda geliştiriciyi uyarmak için bir not eklenmelidir.
Habeeb Perwad

151

Telefon numarası tüm SIM kartlarda fiziksel olarak depolanmadığı veya şebekeden telefona yayınlanmadığı için bu sorunun garantili bir çözümü yoktur. Bu, fiziksel adres doğrulaması gerektiren bazı ülkelerde özellikle doğrudur, ancak daha sonra numara ataması gerçekleşir. Telefon numarası ataması şebekede gerçekleşir - ve SIM kart veya cihaz değiştirilmeden değiştirilebilir (örn. Taşıma bu şekilde desteklenir).

Acı olduğunu biliyorum, ancak büyük olasılıkla en iyi çözüm, kullanıcıdan telefon numarasını bir kez girip saklamasını istemektir.


18
Alınan numarayı doğrulamak için, numaraya bir sms (kod içeren) gönderebilir ve "android.provider.Telephony.SMS_RECEIVED" üzerine bir dinleyici koyarak yanıtı kontrol edebilirsiniz. bu şekilde sayının doğru ve çalıştığından emin olabilirsiniz
Hossein Shahdoost

1
Yaratıcı bir çözüm, ancak bunun için ücretlendirilmesi durumunda kullanıcıya bunu yaptığınızı bildirmek isteyebilirsiniz.
Norman H

3
Var mı herhangi sağlayıcı basit kısa mesaj alma ücretleri bu ?!
ThiefMaster

9
Evet kesinlikle. Planıma kısa mesaj eklemeden önce, alınan kısa mesaj başına 0,30 ABD Doları ödeme alındı. Kanada'da Rogers.
John Kroetch

44

Güncelleme: Whatsapp telefon numarasını hesap adı olarak göstermeyi durdurduğundan bu yanıt artık kullanılamıyor, lütfen bu yanıtı dikkate almayın.

Telefon hizmetinden alamıyorsanız, dikkate almak isteyebileceğiniz alternatif bir çözüm var.

Bugün itibariyle, başka bir büyük Whatsapp uygulamasına güvenebilirsiniz AccountManager. Milyonlarca cihazda bu uygulama yüklü ve telefon numarasını alamıyorsanız, bunu deneyebilirsiniz TelephonyManager.

İzin:

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

Kod:

AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccounts();

for (Account ac : accounts) {
    String acname = ac.name;
    String actype = ac.type;
    // Take your time to look at all available accounts
    System.out.println("Accounts : " + acname + ", " + actype);
}

Kontrol actypeWhatsApp hesabının

if(actype.equals("com.whatsapp")){
    String phoneNumber = ac.name;
}

Elbette kullanıcı WhatsApp'ı yüklemediyse alamayabilirsiniz, ancak yine de denemeye değer. Ve her zaman kullanıcıdan onay istemeniz gerektiğini unutmayın.


1
Bunu bugün hesaplarla uğraşırken gördüm. Sayının böyle ortaya çıkması oldukça kötü. Tabii ki, GET_ACCOUNTS iznine ihtiyacınız var ve bu noktada kullanıcı muhtemelen uygulamanın hangi izinlere sahip olduğunu umursamıyor.
jargetz

9
Bu çözüm güncel değil, Whatsapp artık telefon numarasını hesap adına kaydetmiyor, yeni güncellemeden sonra whatsapp'ın telefon numarasını nereye kaydettiğini biliyor musunuz?
Cohelad

@ Cohelad beni güncellediğiniz için teşekkürler, daha sonra bir kontrol edeceğim ve onaydan sonra bu cevabı geçeceğim, bu arada numarayı nereye kaydedecekleri hakkında hiçbir fikrim yok
Chor Wai Chun

3
Ama Viber sayıyı açığa vur! com.viber.voip.account
xnagyg

32

Önceki cevabımda yayınlandığı gibi

Aşağıdaki kodu kullanın:

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

AndroidManifest.xml'de aşağıdaki izni verin:

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

Ancak, cep telefonu numarası SIM Karta ve Şebeke operatörü / Cep telefonu operatörüne bağlı olduğundan, bu kod her zaman çalışmaz.

Ayrıca, Telefon -> Ayarlar -> Hakkında -> Telefon Kimliği'ni kontrol etmeyi deneyin. Buradaki Numarayı görebiliyorsanız, telefon numarasını yukarıdaki koddan alma olasılığı daha yüksektir. Telefon numarasını ayarlarda görüntüleyemiyorsanız, bu kod ile ulaşamazsınız!

Önerilen Geçici Çözüm:

  1. Kullanıcının telefon numarasını kullanıcıdan manuel giriş olarak alın.
  2. Kullanıcının cep telefonuna SMS yoluyla bir kod gönderin.
  3. Kullanıcıdan, telefon numarasını onaylamak için kodu girmesini isteyin.
  4. Numarayı paylaşılan tercihe kaydedin.

Uygulamanın ilk lansmanı sırasında yukarıdaki 4 adımı tek seferlik etkinlik olarak yapın. Daha sonra, telefon numarası gerektiğinde, paylaşılan tercihte bulunan değeri kullanın.


Bu cevap tüm faktörleri kapsar, kabul edilen kişi olmalıdır =)
Slava Fomin II

Telefonda çift sim varsa, her iki cep telefonu numarasını nasıl alabilirim. yukarıdaki kod ile. Tek sim için iyi çalışıyor
Amrit Chakradhari

26

Böylece Play Services API'sı üzerinden izin ve korsanlık olmadan bir telefon numarası talep edersiniz. Kaynak ve Tam örnek .

Build.gradle dosyasında (sürüm 10.2.x ve üstü gerekir):

compile "com.google.android.gms:play-services-auth:$gms_version"

Etkinliğinizde (kod basitleştirilmiştir):

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...
    googleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Auth.CREDENTIALS_API)
            .build();
    requestPhoneNumber(result -> {
        phoneET.setText(result);
    });
}

public void requestPhoneNumber(SimpleCallback<String> callback) {
    phoneNumberCallback = callback;
    HintRequest hintRequest = new HintRequest.Builder()
            .setPhoneNumberIdentifierSupported(true)
            .build();

    PendingIntent intent = Auth.CredentialsApi.getHintPickerIntent(googleApiClient, hintRequest);
    try {
        startIntentSenderForResult(intent.getIntentSender(), PHONE_NUMBER_RC, null, 0, 0, 0);
    } catch (IntentSender.SendIntentException e) {
        Logs.e(TAG, "Could not start hint picker Intent", e);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == PHONE_NUMBER_RC) {
        if (resultCode == RESULT_OK) {
            Credential cred = data.getParcelableExtra(Credential.EXTRA_KEY);
            if (phoneNumberCallback != null){
                phoneNumberCallback.onSuccess(cred.getId());
            }
        }
        phoneNumberCallback = null;
    }
}

Bu, aşağıdaki gibi bir iletişim kutusu oluşturur:

resim açıklamasını buraya girin


2
İpucu İsteği, telefona bağlı e-posta hesabındaki telefon numarasını gösterir; cihazda sim olmasa bile açılır menüyü gösterir.
Ari

yalnızca bir SIM varken iletişim kutusu birden çok numarayı nasıl gösterir? Benim için 5 rakam gösteriyor. : / :)
cgr

Android'de otomatik olarak ilk telefon numarasını nasıl seçebiliriz?
Noorul

13
private String getMyPhoneNumber(){
    TelephonyManager mTelephonyMgr;
    mTelephonyMgr = (TelephonyManager)
        getSystemService(Context.TELEPHONY_SERVICE); 
    return mTelephonyMgr.getLine1Number();
}

private String getMy10DigitPhoneNumber(){
    String s = getMyPhoneNumber();
    return s != null && s.length() > 2 ? s.substring(2) : null;
}

Http://www.androidsnippets.com/get-my-phone-number adresinden alınan kod


@JaredBurrows "s.substring (2)" nedeniyle.
Kurabiye Canavarı

1
benim için çalışmıyor. NULL değeri alıyorum (gündoğumu SIM kart, İsviçre)
e-nature

bağlantınız koptu.
Ümañg ßürmån

11

Kullanıcının izin gerektirmeden telefon numaralarını seçmesine izin veren yeni bir Android API'si var. Şuraya göz atın: https://android-developers.googleblog.com/2017/10/effective-phone-number-verification.html

// Construct a request for phone numbers and show the picker
private void requestHint() {
    HintRequest hintRequest = new HintRequest.Builder()
       .setPhoneNumberIdentifierSupported(true)
       .build();

    PendingIntent intent = Auth.CredentialsApi.getHintPickerIntent(
        apiClient, hintRequest);
    startIntentSenderForResult(intent.getIntentSender(),
        RESOLVE_HINT, null, 0, 0, 0);
} 

Bu Firebase gerektirir
Vlad

@Vlad Hayır değil. Bu, yalnızca çoğu cihazla birlikte gelen Google Play Hizmetlerini gerektirir. Blog yazısından alıntı: 'Başlamadan önce, bunun SMS alabilen ve Google Play hizmetlerini 10.2.x ve üstü çalıştıran bir telefon numarası olan bir cihaz oluşturmanız ve test etmeniz gerekir.'
Mart'ta

9

Yukarıdaki cevaplardaki yukarıdaki açıklamalara biraz eklemek istiyorum. Bu da başkaları için zaman kazandıracak.

Benim durumumda bu yöntem herhangi bir cep telefonu numarası döndürmedi, boş bir dize döndürüldü. Numaramı yeni sim'e taşımıştım. Bu yüzden Ayarlar> Telefon Hakkında> Durum> Telefon Numaram bölümüne girersem bana "Bilinmeyen" gösterir.


Benim de, bu durum nedir? Dolaşım? Ya da belki de simcard'ın numarası kayıtlı değildir.
Alexandre Marcondes

8

Bazen, aşağıdaki kod döndürür nullveya boş dize.

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

Aşağıdaki izinle

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

Telefon numaranızı almanın başka bir yolu var, bunu birden fazla cihazda test etmedim, ancak yukarıdaki kod her seferinde çalışmıyor.

Aşağıdaki kodu deneyin:

String main_data[] = {"data1", "is_primary", "data3", "data2", "data1", "is_primary", "photo_uri", "mimetype"};
Object object = getContentResolver().query(Uri.withAppendedPath(android.provider.ContactsContract.Profile.CONTENT_URI, "data"),
        main_data, "mimetype=?",
        new String[]{"vnd.android.cursor.item/phone_v2"},
        "is_primary DESC");
if (object != null) {
    do {
        if (!((Cursor) (object)).moveToNext())
            break;
        // This is the phoneNumber
        String s1 = ((Cursor) (object)).getString(4);
    } while (true);
    ((Cursor) (object)).close();
}

Bu iki izni eklemeniz gerekecek.

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

Umarım bu yardımcı olur, teşekkürler!


Lütfen sorabilir miyim: ikinci kod parçasında hücre numarası nedir?
iOSAndroidWindowsMobileAppsDev

1
Değeri String s1telefon numarası olacaktır.
activesince93

Bu kod benim için çalışmıyor. (Son kod snippet'iniz). Boş dize döndürür.
Kristy Welsh

Lütfen cevabınızı açıklayınız. Numara nerede saklanıyor ve bu numarayı nasıl içeriyor? Neye bağlı?
not2qubit

3
@ not2qubit Sanırım Kişiler uygulamasında kendi bağlantısına erişiyor
Samplasion

4

Bu daha basit bir cevap:

public String getMyPhoneNumber()
{
    return ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
            .getLine1Number();
}

3

Öncelikle kullanıcılara cep telefonu numarası Etik politikasına aykırı, daha önce mümkün oldu ama şimdi araştırmamıza göre bunun için sağlam bir çözüm yok, Bazı kodları kullanarak cep telefonu numarası almak mümkün ama hiçbir garanti işe yaramayabilir sadece birkaç cihazda. Çok fazla araştırmadan sonra sadece üç çözüm buldum ama tüm cihazlarda çalışmıyorlar.

Aşağıdaki nedenleri alamıyoruz.

1.Android cihazı ve yeni Sim Kart, cep telefonu numarası cep telefonunda mevcut değilse cep telefonu numarasını kaydetmez ve daha sonra numarayı almak nasıl mümkün olur, cep telefonu numarasına sahip herhangi bir eski sim kartı daha sonra Telefon yöneticisini kullanarak diğer numarayı alabiliriz akıllıca "null" veya "" veya "??????"

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

 TelephonyManager tel= (TelephonyManager)this.getSystemService(Context.
            TELEPHONY_SERVICE);
    String PhoneNumber =  tel.getLine1Number();

Not: - Bu çözümü aşağıdaki cihazda test ettim Moto x, Samsung Tab 4, Samsung S4, Nexus 5 ve Redmi 2 prime ancak boş dizeyi her döndürdüğünde çalışmıyor, bu nedenle sonuç işe yaramaz

  1. Bu yöntem yalnızca Redmi 2 üssünde çalışır, ancak bunun için manifest'te okuma iletişim izni eklemeniz gerekir.

Not: - Bu aynı zamanda garantili ve verimli bir çözüm değil, bu çözümü birçok cihazda test ettim, ancak sadece çift sim cihazı olan Redmi 2 prime'da çalıştı, ilk önce doğru olan iki cep telefonu numarası verdi ancak ikincisi değil benim ikinci sim aittir benim kullanmadığım bazı eski sim kart aittir.

 String main_data[] = {"data1", "is_primary", "data3", "data2", "data1",
            "is_primary", "photo_uri", "mimetype"};
    Object object = getContentResolver().
            query(Uri.withAppendedPath(android.provider.ContactsContract.Profile.CONTENT_URI, "data"),
            main_data, "mimetype=?",
            new String[]{"vnd.android.cursor.item/phone_v2"},
            "is_primary DESC");
    String s1="";
    if (object != null) {
        do {
            if (!((Cursor) (object)).moveToNext())
                break;
            // This is the phoneNumber
             s1 =s1+"---"+ ((Cursor) (object)).getString(4);
        } while (true);
        ((Cursor) (object)).close();
    }
  1. Araştırmamda daha önce buldum, WhatsApp hesabını kullanarak cep telefonu numarası almak mümkün oldu, ancak şimdi yeni Whatsapp sürümü kullanıcının cep telefonu numarasını saklamaz.

Sonuç : - Android, kullanıcının cep numarasını programlı olarak almak için herhangi bir garantili çözüme sahip değildir.

Öneri : - 1. Eğer kullanıcının cep telefonu numarasını doğrulamak istiyorsanız o zaman kullanıcıya onun numarasını vermesini isteyin, otp kullanarak bunu doğrulayabilirsiniz.

  1. Kullanıcının cihazını tanımlamak istiyorsanız, bunun için cihaz IMEI numarasını kolayca alabilirsiniz.

2

TelephonyManagerdoğru çözüm değildir, çünkü bazı durumlarda numara SIM'de saklanmaz. Kullanıcının telefon numarasını uygulamanın ilk açılışında saklamak için paylaşılan tercihi kullanmanızı ve numarayı istediğiniz zaman kullanacağınızı öneririm.


1
Ancak bu yöntem hataya açıktır. Kullanıcı yanlış numara girebilir.
Zohra Khan

3
Evet bu yüzden bu amaçla bir metin mesajı kullandım, Kullanıcı bir sayı girince, SmsManager'dan uygulama mesajının kendisi ve bu sayede orijinal numarayı almak için smsReciever'i kullanabiliriz
Naveed Ahmad

1
Bir sorum daha var .. Bu yöntemle kullanıcı tarafından verilen bir SMS ücreti olacaktır (ücretsiz bir numara değilse) .. Kullanıcının telefon numarasını alabileceğim başka bir yöntem var mı?
Zohra Khan

Evet tabii ki numara ücretsiz bir numara değilse bu SMS üzerinde bazı ücret olacak.
Naveed Ahmad

Hayır, şimdiye kadar TelephonyManager olmadan böyle bir yöntem olmadığını düşünüyorum. ve cevabımda TelephoneManager sorununa dikkat çekiyorum.
Naveed Ahmad

2

Bulduğum çözümlerin bir kombinasyonu ( otomatik doldurmayı da kontrol etmek istiyorsanız, burada örnek proje ):

belirgin

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

build.gradle

    implementation "com.google.android.gms:play-services-auth:17.0.0"

MainActivity.kt

class MainActivity : AppCompatActivity() {
    private lateinit var googleApiClient: GoogleApiClient

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        tryGetCurrentUserPhoneNumber(this)
        googleApiClient = GoogleApiClient.Builder(this).addApi(Auth.CREDENTIALS_API).build()
        if (phoneNumber.isEmpty()) {
            val hintRequest = HintRequest.Builder().setPhoneNumberIdentifierSupported(true).build()
            val intent = Auth.CredentialsApi.getHintPickerIntent(googleApiClient, hintRequest)
            try {
                startIntentSenderForResult(intent.intentSender, REQUEST_PHONE_NUMBER, null, 0, 0, 0);
            } catch (e: IntentSender.SendIntentException) {
                Toast.makeText(this, "failed to show phone picker", Toast.LENGTH_SHORT).show()
            }
        } else
            onGotPhoneNumberToSendTo()

    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == REQUEST_PHONE_NUMBER) {
            if (resultCode == Activity.RESULT_OK) {
                val cred: Credential? = data?.getParcelableExtra(Credential.EXTRA_KEY)
                phoneNumber = cred?.id ?: ""
                if (phoneNumber.isEmpty())
                    Toast.makeText(this, "failed to get phone number", Toast.LENGTH_SHORT).show()
                else
                    onGotPhoneNumberToSendTo()
            }
        }
    }

    private fun onGotPhoneNumberToSendTo() {
        Toast.makeText(this, "got number:$phoneNumber", Toast.LENGTH_SHORT).show()
    }


    companion object {
        private const val REQUEST_PHONE_NUMBER = 1
        private var phoneNumber = ""

        @SuppressLint("MissingPermission", "HardwareIds")
        private fun tryGetCurrentUserPhoneNumber(context: Context): String {
            if (phoneNumber.isNotEmpty())
                return phoneNumber
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                val subscriptionManager = context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE) as SubscriptionManager
                try {
                    subscriptionManager.activeSubscriptionInfoList?.forEach {
                        val number: String? = it.number
                        if (!number.isNullOrBlank()) {
                            phoneNumber = number
                            return number
                        }
                    }
                } catch (ignored: Exception) {
                }
            }
            try {
                val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
                val number = telephonyManager.line1Number ?: ""
                if (!number.isBlank()) {
                    phoneNumber = number
                    return number
                }
            } catch (e: Exception) {
            }
            return ""
        }
    }
}

pl bu yöntemi uygulamadan önce bu cevabın yorumlarına bakın stackoverflow.com/a/48210130/5457916 , bu yöntemi uygulamadan önce
humble_wolf

Sağladığınız bağlantı, burada yaptığımın yalnızca bir parçası. Burada önce kendim otomatik olarak doldurmaya çalıştım. Ve bunun için bir geri dönüş var.
android geliştirici

Biliyorum efendim, cevabınız harika ve herhangi bir anlamda yanlış değil, sadece okuyucuların bu şekilde gelen koşulların farkında olmalarını istedim, örneğin bu, yorumlarınızda belirtilen google hesabınızla ilişkili numarayı vb.
humble_wolf

Yazdıklarımı hala tercih ediyorum. Üzgünüz
android geliştirici

1

Küçük bir katkı. Benim durumumda, kod bir hata istisnası başlattı. Kod çalıştırmak ve bu sorunu düzeltmek için bir açıklama koymak gerekir. İşte bu kodu izin.

public static String getLineNumberPhone(Context scenario) {
    TelephonyManager tMgr = (TelephonyManager) scenario.getSystemService(Context.TELEPHONY_SERVICE);
    @SuppressLint("MissingPermission") String mPhoneNumber = tMgr.getLine1Number();
    return mPhoneNumber;
}

0

Birden fazla sesli posta hesabınızın olması mümkün olsa da, kendi numaranızdan arama yaparken operatörler sizi sesli postaya yönlendirir. Yani, TelephonyManager.getVoiceMailNumber()veya TelephonyManager.getCompleteVoiceMailNumber()ihtiyacınız olan lezzete bağlı olarak.

Bu yardımcı olur umarım.


5
"getCompleteVoiceMailNumber" işlevi yoktur, ayrıca getVoiceMailNumber () işlevi telefonun gerçek numarasından farklı bir sayı döndürür.
android geliştirici

Bu, sadece dünyada birkaç Mobil Operatör ile çalışan bir numara. Ancak teknik olarak geçici bir çözüm olabilir.
technik

0

Bu bağımlılığı ekleyin: implementation 'com.google.android.gms:play-services-auth:18.0.0'

Telefon numarası listesini getirmek için şunu kullanın:

val hintRequest = HintRequest.Builder()
    .setPhoneNumberIdentifierSupported(true)
    .build()

val intent = Credentials.getClient(context).getHintPickerIntent(hintRequest)

startIntentSenderForResult(
    intent.intentSender,
    PHONE_NUMBER_FETCH_REQUEST_CODE,
    null,
    0,
    0,
    0,
    null
)

Play hizmetleri iletişim kutusuna dokunduktan sonra:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent? { 
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == PHONE_NUMBER_FETCH_REQUEST_CODE) {
        data?.getParcelableExtra<Credential>(Credential.EXTRA_KEY)?.id?.let { 
            useFetchedPhoneNumber(it)
        }
    }
}

-6

telefonumun ellerine geçebileceği telefon numarasını almak için gereken bir güvenlik uygulaması üzerinde çalışırken, bunu yapmak zorunda kaldım; 1. Önyükleme işlemini tamamlayın ve ardından dize sonucu döndüren telephonyManager'dan Line1_Number almayı deneyin. 2. Dize sonucunu kendi telefon numaram ile karşılaştırın ve eşleşmiyorsa veya dize null döndürürse, 3. gizlice dize sonucunu ve ofis numarama özel bir işaret içeren bir SMS gönderin. 4. mesaj gönderme başarısız olursa, bir hizmet başlatın ve gönderilen SMS bekleyen amaç başarılı bir şekilde dönene kadar her saat sonra denemeye devam edin. Bu adımlarla kayıp telefonumu kullanan kişinin numarasını alabilirdim. kişinin ücret alması önemli değildir.


neden vahşiler?
humble_wolf
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.