Ottenere a livello di codice il numero di telefono del telefono Android


443

Come posso ottenere a livello di codice il numero di telefono del dispositivo che esegue la mia app Android?


questo non è possibile, tranne se lo inserisci da solo. Il numero di telefono non è noto dal cellulare o dalla SIM, solo dalla rete ....
tomsoft

3
@tomsoft Pensaci ... Come fanno le app come Facebook a verificare automaticamente il tuo numero di telefono ...?
Eddie Hart,

1
@tomsoft No, la maggior parte delle volte non richiede nemmeno il tuo numero di telefono o, in caso affermativo, la casella è precompilata.
Eddie Hart,

1
@tomsoft Beh, mi sono iscritto a Facebook l'altro giorno e non mi ha chiesto il mio numero quando mi ha mandato un codice. Provalo. ;)
Eddie Hart,

1
@EddieHart Fallo anche, e mi è stato chiesto il mio numero di telefono. Quindi questo conferma che in generale, questo non è accessibile e alcuni operatori potrebbero aggiungere queste informazioni al momento
dell'installazione,

Risposte:


484

Codice:

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

Autorizzazione richiesta:

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

Avvertenze:

Secondo i commenti altamente votati, ci sono alcuni avvertimenti di cui essere consapevoli. Questo può restituire nullo ""o anche "???????"e può restituire un numero di telefono non aggiornato che non è più valido. Se vuoi qualcosa che identifichi in modo univoco il dispositivo, dovresti getDeviceId()invece utilizzare .


150
In realtà, non così perfetto. L'ultima volta che ho provato questo metodo, ha riportato il numero di telefono che il mio telefono originariamente aveva, prima che il mio vecchio numero di cellulare fosse trasferito su di esso. Probabilmente lo fa ancora, poiché l'app Impostazioni mostra ancora quel numero defunto. Inoltre, ci sono rapporti secondo cui alcune SIM causano il ritorno di questo metodo null. Detto questo, non sono a conoscenza di una risposta migliore.
CommonsWare

4
Mark ha ragione. Se l'intento di utilizzare qualcosa che identifichi in modo univoco il telefono, utilizzerei getDeviceId () che restituirà IMEA per GSM.
Alex Volovoy,

15
(Penso che intendi IMEI ...?)
ChaimKut,

23
Bene, l'ho provato su Nexus One con sistema operativo Android 2.2 e restituisce null
Omar Rehman,

43
Gli sviluppatori possono pensare che sia la risposta perfetta considerando il conteggio dei voti. È necessario aggiungere una nota per avvertire lo sviluppatore che questo metodo non fornirà sempre il numero di telefono.
Habeeb Perwad,

151

Non esiste una soluzione garantita a questo problema perché il numero di telefono non viene archiviato fisicamente su tutte le schede SIM o trasmesso dalla rete al telefono. Ciò è particolarmente vero in alcuni paesi che richiedono la verifica dell'indirizzo fisico, con l'assegnazione dei numeri solo dopo. L'assegnazione del numero di telefono avviene sulla rete e può essere modificata senza cambiare la scheda SIM o il dispositivo (ad esempio, in questo modo è supportato il porting).

So che è un dolore, ma molto probabilmente la soluzione migliore è semplicemente chiedere all'utente di inserire il proprio numero di telefono una volta e memorizzarlo.


18
Per verificare il numero preso, puoi inviare un sms (contenente un codice) al numero e controllare la risposta mettendo un ascoltatore su "android.provider.Telephony.SMS_RECEIVED". in questo modo puoi assicurarti che il numero sia corretto e funzionante
Hossein Shahdoost,

1
Soluzione creativa, ma potresti voler far sapere all'utente che lo stai facendo nel caso in cui vengano addebitati.
Norman H,

3
Esiste un fornitore che addebita la ricezione di semplici messaggi di testo ?!
ThiefMaster

9
Si assolutamente. Prima di aggiungere SMS al mio piano, mi è stato addebitato $ 0,30 per messaggio di testo ricevuto. Rogers in Canada.
John Kroetch,

44

Aggiornamento: questa risposta non è più disponibile poiché Whatsapp ha smesso di esporre il numero di telefono come nome account, ignorando gentilmente questa risposta.

Esiste in realtà una soluzione alternativa che potresti prendere in considerazione, se non riesci a ottenerla tramite il servizio di telefonia.

Ad oggi, puoi fare affidamento su un'altra grande applicazione Whatsapp, utilizzando AccountManager. Milioni di dispositivi hanno installato questa applicazione e se non riesci a ottenere il numero di telefono tramite TelephonyManager, puoi provarlo.

Autorizzazione:

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

Codice:

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);
}

Controlla l' actypeaccount WhatsApp

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

Ovviamente potresti non ottenerlo se l'utente non ha installato WhatsApp, ma vale comunque la pena provare. E ricorda che dovresti sempre chiedere conferma all'utente.


1
L'ho visto oggi quando stavo scherzando con gli account. È piuttosto brutto che il numero sia esposto in quel modo. Ovviamente, hai bisogno dell'autorizzazione GET_ACCOUNTS e a quel punto probabilmente all'utente non importa quali autorizzazioni ha l'app.
jargetz,

9
Questa soluzione non è aggiornata, Whatsapp non salva più il numero di telefono sul nome dell'account, sai dove whatsapp salva il numero di telefono dopo il nuovo aggiornamento?
Cohelad,

@Cohelad grazie per avermi aggiornato, dopo avrò un controllo e barrerò questa risposta dopo la conferma, nel frattempo non ho idea di dove salvino il numero
Chor Wai Chun,

3
Ma Viber ESPORTA il numero! com.viber.voip.account
xnagyg

32

Come pubblicato nella mia precedente risposta

Usa sotto il codice:

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

In AndroidManifest.xml, concedere le seguenti autorizzazioni:

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

Ma ricorda, questo codice non funziona sempre, poiché il numero di cellulare dipende dalla carta SIM e dall'operatore di rete / gestore di telefonia cellulare.

Inoltre, prova a controllare in Telefono -> Impostazioni -> Informazioni -> Identità telefono , se riesci a visualizzare il numero lì, la probabilità di ottenere il numero di telefono dal codice sopra è più alta. Se non riesci a visualizzare il numero di telefono nelle impostazioni, non sarai in grado di ottenere tramite questo codice!

Soluzione suggerita:

  1. Ottieni il numero di telefono dell'utente come input manuale dall'utente.
  2. Invia un codice al numero di cellulare dell'utente tramite SMS.
  3. Chiedi all'utente di inserire il codice per confermare il numero di telefono.
  4. Salva il numero in quota condivisa.

Esegui i 4 passaggi precedenti come attività unica durante il primo avvio dell'app. Successivamente, ogni volta che è richiesto il numero di telefono, utilizzare il valore disponibile nelle preferenze condivise.


Questa risposta copre tutti i fattori, dovrebbe essere quello accettato =)
Slava Fomin II

Come posso ottenere entrambi i numeri di cellulare se sul telefono è disponibile una doppia sim. con il codice sopra. Per la singola simulazione funziona benissimo
Amrit Chakradhari,

26

Quindi è così che richiedi un numero di telefono tramite l'API di Play Services senza l'autorizzazione e gli hack. Fonte e esempio completo .

Nel tuo build.gradle (versione 10.2.x e successive necessarie):

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

Nella tua attività (il codice è semplificato):

@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;
    }
}

Questo genererà una finestra di dialogo come questa:

inserisci qui la descrizione dell'immagine


2
La richiesta di suggerimento mostra il numero di telefono dall'account e-mail collegato al telefono, mostrerà il menu a discesa anche se non ci sono sim nel dispositivo.
Ari,

in che modo la finestra di dialogo mostra più numeri mentre esiste una sola SIM? Per me, mostra 5 numeri. : / :)
cgr

come possiamo selezionare automaticamente il primo numero di telefono in Android?
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;
}

Codice tratto da http://www.androidsnippets.com/get-my-phone-number


@JaredBurrows a causa di "s.substring (2)".
Cookie Monster

1
non funziona per me. Ottengo un valore NULL (sunrise SIM card, Svizzera)
e-nature

il tuo collegamento è interrotto.
Ümañg ßürmån,

11

C'è una nuova API Android che consente all'utente di selezionare il proprio numero di telefono senza la necessità di un'autorizzazione. Dai un'occhiata a: 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);
} 

Ciò richiede Firebase
Vlad

@Vlad No non lo fa. Ciò richiede solo Google Play Services fornito con la maggior parte dei dispositivi. Citazione dal post sul blog: "Prima di iniziare devi creare e testare questo è un dispositivo con un numero di telefono che può ricevere SMS ed esegue i servizi di Google Play 10.2.xe versioni successive".
Wirling

9

Voglio solo aggiungere un po 'qui alle spiegazioni sopra nelle risposte sopra. Ciò farà risparmiare tempo anche agli altri.

Nel mio caso questo metodo non ha restituito alcun numero di cellulare, è stata restituita una stringa vuota. È stato a causa del caso che avevo portato il mio numero sulla nuova sim. Quindi, se vado in Impostazioni> Informazioni sul telefono> Stato> Il mio numero di telefono mi mostra "Sconosciuto".


Anche il mio, qual è questa condizione? Roaming? O forse la simcard non ha il numero memorizzato in essa.
Alexandre Marcondes,

8

A volte, sotto il codice restituisce nullo stringa vuota.

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

Con il permesso seguente

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

C'è un altro modo in cui sarai in grado di ottenere il tuo numero di telefono, non l'ho testato su più dispositivi ma il codice sopra non funziona ogni volta.

Prova sotto il codice:

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();
}

Dovrai aggiungere queste due autorizzazioni.

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

Spero che questo ti aiuti, grazie!


Potrei chiedere: nel secondo frammento qual è il numero di cella?
iOSAndroidWindowsMobileAppsDev

1
Il valore di String s1sarà il numero di telefono.
activesince93,

Questo codice non funziona per me. (Il tuo ultimo frammento di codice). Restituisce una stringa vuota.
Kristy Welsh,

Per favore, spiega la tua risposta. Dove è memorizzato il numero e come contiene il numero? Dipende da cosa?
not2qubit

3
@ not2qubit Penso che sia l'accesso alla contatto nella applicazione Contatti
Samplasion

4

Questa è una risposta più semplificata:

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

3

Innanzitutto ottenere il numero di cellulare degli utenti è contro la politica etica, prima era possibile, ma ora secondo la mia ricerca non esiste una soluzione solida disponibile per questo, Usando un po 'di codice è possibile ottenere il numero di cellulare ma nessuna garanzia potrebbe essere che funzionerà solo in pochi dispositivi. Dopo molte ricerche ho trovato solo tre soluzioni ma non funzionano su tutti i dispositivi.

C'è il seguente motivo per cui non stiamo ottenendo.

1.Il dispositivo Android e la nuova scheda SIM non memorizzano il numero di cellulare se il numero di cellulare non è disponibile nel dispositivo e nella sim, quindi come è possibile ottenere il numero, se qualsiasi vecchia scheda SIM con numero di cellulare quindi utilizza il gestore della telefonia, possiamo ottenere il numero altro saggio restituirà il "null" o "" o "??????"

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

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

Nota: - Ho testato questa soluzione nel seguente dispositivo Moto x, Samsung Tab 4, Samsung S4, Nexus 5 e Redmi 2 prime ma non funziona ogni volta che restituisce una stringa vuota, quindi la conclusione è inutile

  1. Questo metodo funziona solo in Redmi 2 prime, ma per questo è necessario aggiungere l'autorizzazione di contatto di lettura in manifest.

Nota: - Questa non è anche la soluzione garantita ed efficiente, ho testato questa soluzione su molti dispositivi ma ha funzionato solo in Redmi 2 prime che è un dispositivo dual sim che mi dà due numeri di cellulare il primo è corretto ma il secondo no appartiene alla mia seconda sim appartiene alla mia vecchia sim card che non sto usando.

 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. Nella mia ricerca ho scoperto prima che era possibile ottenere il numero di cellulare utilizzando l'account WhatsApp ma ora la nuova versione di Whatsapp non memorizza il numero di cellulare dell'utente.

Conclusione : - Android non ha alcuna soluzione garantita per ottenere il numero di cellulare dell'utente a livello di codice.

Suggerimento : - 1. Se desideri verificare il numero di cellulare dell'utente, chiedi all'utente di fornire il suo numero, utilizzando otp puoi verificarlo.

  1. Se si desidera identificare il dispositivo dell'utente, è possibile ottenere facilmente il numero IMEI del dispositivo.

2

TelephonyManagernon è la soluzione giusta, perché in alcuni casi il numero non è memorizzato nella SIM. Ti suggerisco di usare la preferenza condivisa per memorizzare il numero di telefono dell'utente per la prima volta che l'applicazione è aperta e il numero verrà utilizzato ogni volta che ti serve.


1
Ma questo metodo è soggetto a errori. L'utente può inserire un numero errato.
Zohra Khan,

3
sì, a questo scopo ho usato un messaggio di testo, quando l'utente inserisce un numero, quindi da SmsManager il messaggio dell'app stesso, e attraverso questo possiamo usare smsReciever per ottenere il numero originale
Naveed Ahmad

1
Ho ancora una domanda ... con questo metodo ci sarà un addebito SMS dato dall'utente (se non è un numero verde) .. C'è qualche altro metodo che posso ottenere senza telefono dell'utente?
Zohra Khan,

Sì, certo, ci sarà un certo addebito su quell'SMS se il numero non è un numero verde.
Naveed Ahmad,

No, penso che non esista un metodo del genere senza TelephonyManager fino ad ora. e sottolineo il problema di TelephoneManager nella mia risposta.
Naveed Ahmad,

2

Ecco una combinazione delle soluzioni che ho trovato (esempio di progetto qui , se si desidera controllare anche il riempimento automatico):

manifesto

    <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 ""
        }
    }
}

vedere i commenti su questa risposta stackoverflow.com/a/48210130/5457916 , prima di implementare questo metodo
humble_wolf

Il link che hai fornito è solo una parte di quello che ho fatto qui. Qui ho prima provato a riempirlo automaticamente da solo. E hanno un fallback per questo.
sviluppatore Android il

Lo so signore, la tua risposta è ottima e non sbagliata in alcun senso, volevo solo che i lettori fossero consapevoli delle condizioni che si presentano in questo modo, ad esempio questo può popolare il numero associato al tuo account Google ecc. Menzionato nei commenti lì.
humble_wolf

Preferisco ancora quello che ho scritto. Siamo spiacenti
sviluppatore Android il

1

Un piccolo contributo. Nel mio caso, il codice ha lanciato un'eccezione di errore. Ho dovuto mettere un'annotazione che per l'esecuzione del codice e risolvere il problema. Qui ho lasciato questo codice.

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

0

Sebbene sia possibile avere più account Voicemail, quando si chiama dal proprio numero, i gestori indirizzano l'utente alla Voicemail. Quindi, TelephonyManager.getVoiceMailNumber()oTelephonyManager.getCompleteVoiceMailNumber() , a seconda del sapore di cui hai bisogno.

Spero che sia di aiuto.


5
non esiste una funzione "getCompleteVoiceMailNumber", più getVoiceMailNumber () restituisce un numero diverso dal numero reale del telefono.
sviluppatore Android

Questo è un trucco che funziona solo con un paio di operatori mobili nel mondo. Ma tecnicamente potrebbe essere una soluzione alternativa.
technik,

0

Aggiungi questa dipendenza: implementation 'com.google.android.gms:play-services-auth:18.0.0'

Per recuperare l'elenco dei numeri di telefono, utilizzare questo:

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
)

Dopo aver toccato la finestra di dialogo dei servizi di riproduzione:

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

mentre lavoravo su un'app di sicurezza che aveva bisogno di ottenere il numero di telefono di chi mai il mio telefono potesse avere nelle loro mani, ho dovuto farlo; 1. ricevere l'avvio completato e quindi provare a ottenere Line1_Number da telephonyManager che restituisce un risultato stringa. 2. confronta il risultato della stringa con il mio numero di telefono e se non corrispondono o la stringa restituisce null allora, 3. invia segretamente un SMS contenente il risultato della stringa più un segno speciale al mio numero di ufficio. 4. se l'invio del messaggio fallisce, avviare un servizio e continuare a provare dopo ogni ora fino a quando l'SMS in attesa non restituisce l'intento con successo. Con questi passaggi ho potuto ottenere il numero della persona che utilizza il mio telefono perso. non importa se la persona è accusata.


perché i voti negativi?
humble_wolf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.