Italian Lettura codice del telefono

Gottrik

Member
Licensed User
Salve, premetto che non sono un programmatore esperto, ho utilizzato solo il Fortran, il Basic e poi il VB6 un bel po’ di anni fa …
Tuttavia, grazie a B4A ho realizzato un’applicazione che proteggo tramite una Password calcolata partendo dal “Codice” del telefono in uso.
In passato avevo letto un post di Erel che consigliava il metodo seguente per acquisire il codice del telefono :

Sub GetDeviceId As String

Api = r.GetStaticField("android.os.Build$VERSION", "SDK_INT")
Log("Api = "& Api)
If Api < 9 Then
'Old device
If File.Exists(File.DirInternal, "__id") Then
Return File.ReadString(File.DirInternal, "__id")
Else
Dim id As Int
id = Rnd(0x10000000, 0x7FFFFFFF)
File.WriteString(File.DirInternal, "__id", id)
Return id
End If
Else
'New device
Return r.GetStaticField("android.os.Build", "SERIAL")
End If

End Sub

Ci ho capito poco, però tutto ok, l'ho utilizzata fino a qualche settimana fa, quando ho scoperto che Android 10 non accetta la suddetta procedura … ho fatto qualche ricerca e poi ho trovato un link che trattava lo stesso argomento :

https://www.b4x.com/android/forum/threads/111818/#content

Al quale Erel rispondeva, suggerendo la seguente procedura, da lui ritenuta ottimale :

The only valid id is this one: https://www.b4x.com/android/forum/threads/advertising-id.101050/#content

A questo punto devo dire che, tanto per cambiare non ci ho capito nulla, ma questo per me non è una novità …
Ho rinunciato …

Ho ripiegato su una vecchia procedura che avevo già utilizzato prima che Erel la dichiarasse inadeguata ma che, fortunatamente, viene accettata anche dai telefoni con sistema Android 10 …
Vedi qui sotto :

Sub Codice_Click

Dim P As Phone
Dim Codice As String

Codice = P.GetSettings("android_id") 'Codice alfanumerico di 16 caratteri
Log("Codice = " & Codice )
Codice = Codice.SubString(8) ‘Per semplicità , riduco a 8 il numero dei caratteri
Log("Codice = " & Codice )

Msgbox("Per ottenere la versione registrata comunicare i seguenti dati a:"&CRLF&CRLF&"abcdefg@yahoo.it"&CRLF&CRLF& _
"Marca e modello del telefono cellulare Android ?"&CRLF&CRLF&"Codice Android ID = "&Codice& _
CRLF&CRLF&"Attenzione alle lettere minuscole o maiuscole !"&CRLF&CRLF&" "," ")

Msgbox("Per il corretto funzionamento del programma la dimensione del carattere deve essere impostata su 'normale'."," Importante")

End Sub

A questo punto utilizzo il codice di 8 caratteri per realizzare la password … e tutto funziona …

Problema risolto ? Forse no … perché Erel aveva giudicato inappropriato questo metodo, forse troppo elementare ? O forse perché questo Codice può variare dopo il Reset del telefono o dopo qualche aggiornamento … accidenti, non ricordo … cosa dite ?

Grazie

Gottrik
 
Last edited:

Gottrik

Member
Licensed User
Correggo : la "Sub GetDeviceId As String" funziona anche con Android 10, però invece di darmi Codice = "a12b3c4d ecc. " mi dà "own" , quindi non legge il codice ...
 

Star-Dust

Expert
Licensed User
non funziona anche nelle versioni precedenti, se non erro dalla 6 in poi generano tutti lo stesso codice.
Per motivi di sicurezza non è permesso identificare il dispositivo.

comunque google assegna un suo numero identitificativo unico per la pubblicità.

usa quello: https://www.b4x.com/android/forum/threads/advertising-id.101050/
 
Last edited:

LucaMs

Expert
Licensed User
non funziona anche nelle.versioni precedenti, per motivi di sicurezza non è permesso identificare il dispositivo.

comunque google assegna un suo numero identitificativo unico per la pubblicità.

usa quello: https://www.b4x.com/android/forum/threads/advertising-id.101050/
Eh, come suggerito da Erel, ma...

1) quando scrivono che l'utente può modificarlo... si riferisce all'utilizzatore finale o allo sviluppatore? Perché se si tratta del primo, non vedo a cosa possa servire, soprattutto non me pare che possa essere utilizzato per identificare un dispositivo ma probabilmente un account Google!

2) E se uno non volesse mettere pubblicità nelle proprie app?

Mah, col tempo (anni), leggendo qua e là, senza manco considerare la 10 di Android, mi pare di capire che non ci sia modo, appunto, di "identificare" un dispositivo.
 

Star-Dust

Expert
Licensed User
Era un mio suggerimento Erel ha solo aggiustato il mio codice.

L'utente finale potrebbe richiedere un nuovo codice ID a google che ne genera uno nuovo. Ma in realtà pochi sanno come fare, anzi pochi sanno che esiste un google ID per la pubblicità e comunque c'è un trucco che non spiego per ovviare a questa rara eventualità.

Il codice ID viene generato da google per ogni utente ed è unico. Viene generato prescindere se lo sviluppatore metta o meno la pubblicità. Il codice è legato all'account quindi tutte le app chebfabbo pubblicità leggeranno lo stesso ID.
le app che api che gestiscono la pubblicità leggono questo codice per poter associare il profilo dell'utente a quel codice ID
 
Last edited:

Gottrik

Member
Licensed User
Luca, il modo c'è ed è quello che ho descritto e che funziona ... altrimenti come potrei fare per consentire il funzionamento della mia App SOLO su telefoni abilitati tramite una password ?
Non sto parlando di una App scaricabile da Play Store ..
 

LucaMs

Expert
Licensed User
1 - l'utente finale potrebbe richiedere un nuovo codice ID a google che ne genera uno nuovo
1 - Il codice ID viene generato da google per ogni utente ed è unico
2 - Il codice è legato all'account
Ho sonno 😄 e sono "concentrato" pure su un paio di altre cose, "contemporaneamente", ma...

mi sa che mi servirebbe capire a cosa si riferiscano i vari "account".

1) Google fornisce a me utente (account Google) un ID pubblicitario, senza nemmeno che io lo sappia (codice che io potrei chiedere di cambiare)?
2) ? Qui, a quale account ti riferisci, utente o sviluppatore?
 

Star-Dust

Expert
Licensed User
Hai un codice ID Advisor dal momento che acquisti un dispositivo Android e lo colleghi a Internet. Appena inserisci un account Google nel tuo dispositivo l' ID viene associato a quell'account (ovviamente account utente)

comunque se ancora non avete capito qualcosa fate qualche ricerca su internet ed è tutto spiegato.
(https://support.google.com/googleplay/android-developer/answer/6048248?hl=it)
 
Last edited:

sirjo66

Well-Known Member
Licensed User
Prova questo:
B4X:
Dim R As Reflector
R.Target = R.GetContext
R.Target = R.RunMethod2("getSystemService", "wifi", "java.lang.String")
R.Target = R.RunMethod("getConnectionInfo")
Log("Codice = " & R.RunMethod("getMacAddress"))
 

Star-Dust

Expert
Licensed User
Prova questo:
B4X:
Dim R As Reflector
R.Target = R.GetContext
R.Target = R.RunMethod2("getSystemService", "wifi", "java.lang.String")
R.Target = R.RunMethod("getConnectionInfo")
Log("Codice = " & R.RunMethod("getMacAddress"))
Anche il MAC è disabilitato da un certo punto in poi. Non ricordo la versione.

Ci sono diversi thread riguardo l'identificazione del dispositivo, al momento quello che funziona su tutti i dispositivi è ID Advisor
 
Last edited:
Top