Je développe une application Android et je vais utiliser la bibliothèque LVL pour vérifier la licence Google Play. p>
Après avoir lu la documentation LVL, j'ai lu que je dois obtenir l'Android.Settings.secure.android_id pour obfusez les réponses Google Play. P>
Mais j'ai aussi lu que l'android_id obtenu de la téléphonieManager est parfois identique pour différents appareils. P>
Premièrement, il n'est pas 100% fiable sur les versions d'Android avant 2.2 ("Froyo"). En outre, il y a eu au moins un bogue largement observé dans un combiné populaire d'un important fabricant, où chaque instance a le même android_id p> blockQuote>
est-ce vrai? p>
merci p>
3 Réponses :
Considérant que votre passage cité vient de Google lui-même A >, oui, c'est vrai. P>
Vraisemblablement depuis la préoccupation et la demande d'utilisation, il vient de Google, le fait qu'il pourrait ne pas être unique est finalement désavantageux (c'est-à-dire plus sujette à l'usurpation / perspicace), mais j'espère pas quelque chose qui fait échouer l'algorithme.
Donc, pour le développement de la licence, il n'a pas d'importance que Android_ID n'est pas unique, n'est-ce pas?
@Eduardo: Je n'ai jamais utilisé Lvl, je ne peux donc pas répondre à cela. Je suis simplement en train de traiter votre "est-ce vrai?" question.
Considérant ma propre note des pires vendeurs (imo, aucune infraction ici) Je parierais sur Samsung.
@MatiaSelorriaga sa motorola. Source
considère mon cas:
donc je n'ai donc pas résolu le problème avec l'adb, mais pour identifier un appareil Android J'utilise ce code (Utilisez getDeviceID (contexte) ): P> public static String getDeviceId(Context context) {
String id = getUniqueID(context);
if (id == null)
id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
return id;
}
private static String getUniqueID(Context context) {
String telephonyDeviceId = "NoTelephonyId";
String androidDeviceId = "NoAndroidId";
// get telephony id
try {
final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
telephonyDeviceId = tm.getDeviceId();
if (telephonyDeviceId == null) {
telephonyDeviceId = "NoTelephonyId";
}
} catch (Exception e) {
}
// get internal android device id
try {
androidDeviceId = android.provider.Settings.Secure.getString(context.getContentResolver(),
android.provider.Settings.Secure.ANDROID_ID);
if (androidDeviceId == null) {
androidDeviceId = "NoAndroidId";
}
} catch (Exception e) {
}
// build up the uuid
try {
String id = getStringIntegerHexBlocks(androidDeviceId.hashCode())
+ "-"
+ getStringIntegerHexBlocks(telephonyDeviceId.hashCode());
return id;
} catch (Exception e) {
return "0000-0000-1111-1111";
}
}
public static String getStringIntegerHexBlocks(int value) {
String result = "";
String string = Integer.toHexString(value);
int remain = 8 - string.length();
char[] chars = new char[remain];
Arrays.fill(chars, '0');
string = new String(chars) + string;
int count = 0;
for (int i = string.length() - 1; i >= 0; i--) {
count++;
result = string.substring(i, i + 1) + result;
if (count == 4) {
result = "-" + result;
count = 0;
}
}
if (result.startsWith("-")) {
result = result.substring(1, result.length());
}
return result;
}
Vous dites que vous suivez des installations d'applications uniques. Ne serait-il pas plus facile d'enregistrer une chaîne de génératrice à des préférences partagées, si l'on ne l'est pas déjà enregistré et l'utiliser? Je veux dire comme utiliser un booléen idmentéisé, lorsque la première génération de la première fois, mettez-la en vrais, et s'il est vrai, obtenez l'ID de SharedPreferences, de cette façon, vous auriez une carte d'installation unique pour chaque installation.
@LXKNVLK J'ai besoin du même identifiant si je désinstalle l'application et la réinstallez-la.
//Fields
String myID;
int myversion = 0;
myversion = Integer.valueOf(android.os.Build.VERSION.SDK);
if (myversion < 23) {
TelephonyManager mngr = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
myID= mngr.getDeviceId();
}
else
{
myID =
Settings.Secure.getString(getApplicationContext().getContentResolver(),
Settings.Secure.ANDROID_ID);
}
Secure.ANDROID_ID is unique for each device.