Italian Seriale dispositivo

GaNdAlF89

Active Member
Licensed User
Longtime User
Ciao a tutti! Ho scoperto solo adesso che esiste il forum in Italiano XD Ero abituato ad utilizzare il classico in inglese...
Ho sviluppato un'app per un'azienda, la quale richiede il censimento dei dispositivi in modo da controllare, lato server, se il dispositivo che utilizza l'app in questione è tra quelli abilitati dall'azienda stessa. In precedenza lo facevo leggendo semplicemente l'IMEI del dispositivo, in modo che fosse univoco, tramite il seguente:
B4X:
Dim TabletInfo As PhoneId
Dim imei As String = TabletInfo.GetDeviceId.Trim
dim iccid As String = TabletInfo.GetSimSerialNumber

Adesso che dalle nuove versioni di Android non è più possibile leggere questi dati, cosa mi consigliate di utilizzare, in modo che siano il più univoco possibile? Tenete conto che l'app viene installata manualmente e non tramite il Play Store (che non viene neanche configurato con un account Google, ogni dispositivo non possiede un account), quindi non posso utilizzare il "advertising id". Grazie mille!
 

Star-Dust

Expert
Licensed User
Anche se lo installi fuori dal market il dispositivo ha un sui ID advertising settato in automatico al primo avvio di Android.
 

GaNdAlF89

Active Member
Licensed User
Longtime User
Anche se lo installi fuori dal market il dispositivo ha un sui ID advertising settato in automatico al primo avvio di Android.
Ah grazie, pensavo si dovesse collegare ad un account, per avere un id.
E se invece volessi leggere l'Android-id? Cioè l'id dell'installazione corrente, che cambia solo se si esegue un factory reset
 

Star-Dust

Expert
Licensed User
 

Star-Dust

Expert
Licensed User
Prego
 

sirjo66

Well-Known Member
Licensed User
Longtime User
io uso questo:

B4X:
Sub GetDeviceId As String
    Dim r As Reflector
    Dim Api As Int
    Api = r.GetStaticField("android.os.Build$VERSION", "SDK_INT")
    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

tra l'altro si può semplificare in:
B4X:
Sub GetDeviceId As String
    Dim r As Reflector
    Return r.GetStaticField("android.os.Build", "SERIAL")
End Sub

dato che con API < 9 praticamente non c'è più nulla
 

LucaMs

Expert
Licensed User
Longtime User
Ma se l'app viene disinstallata e reinstallata l'id salvato si perde.
 

Star-Dust

Expert
Licensed User
io per distinguere gli smartphone non uso ID advertising ne Android ID.

Semplicemente gli sgarri un chiodo sullo schermo è così lo dustinguo dall'altro che l'ho graffiato dal lato della batteria che ovviamente è diverso da quelli che ha il vetrino della fotocamera scheggiato o da quello che ha il tasto del volume staccato
 
Last edited:

amorosik

Expert
Licensed User
io per distinguere gli smartphone non uso ID advertising ne Android ID.

Semplicemente gli scatti un chiodo sullo schermo è così lo dustinguo dall'altro che l'ho graffiato dal lato della batteria che ovviamente è diverso da quelli che ha il vetrino della fotocamera scheggiato o da quello che ha il tasto del volume staccato

E da codice come fai la lettura? 🤣
 

Star-Dust

Expert
Licensed User
E da codice come fai la lettura? 🤣
Semplice, accendo al telecamera, se c'è un taglio in mezzo all'immagine è quello col vetrino rotto.
 

Star-Dust

Expert
Licensed User
1613749657086.png
 

GaNdAlF89

Active Member
Licensed User
Longtime User
io uso questo:

B4X:
Sub GetDeviceId As String
    Dim r As Reflector
    Dim Api As Int
    Api = r.GetStaticField("android.os.Build$VERSION", "SDK_INT")
    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

tra l'altro si può semplificare in:
B4X:
Sub GetDeviceId As String
    Dim r As Reflector
    Return r.GetStaticField("android.os.Build", "SERIAL")
End Sub

dato che con API < 9 praticamente non c'è più nulla
Grazie anche a te!

Tempo sprecato
In che senso? 😅
 
Top