Warum machst Du es nicht beispielsweise so:
1public String myUniqueNumber() {
2
3 String return_value = "";
4 byte[] result = null;
5
6
7 try {
8 // initialize SecureRandom
9 SecureRandom prng = SecureRandom.getInstance("SHA1PRNG");
10
11 //generate a random number
12 String randomNum = new Integer( prng.nextInt() ).toString();
13 MessageDigest sha = MessageDigest.getInstance("SHA-1");
14 result = sha.digest( randomNum.getBytes() );
15
16 } catch (NoSuchAlgorithmException e) {
17 Log.e("Error", e.getMessage());
18 }
19
20
21 if (result != null) return_value = hexEncode(result);
22 else return_value = String.valueOf(System.currentTimeMillis()); // to be save on Error
23
24 return return_value;
25 }
26
27 static private String hexEncode( byte[] aInput){
28 StringBuilder result = new StringBuilder();
29 char[] digits = {'0', '1', '2', '3', '4','5','6','7','8','9','a','b','c','d','e','f'};
30 for ( int idx = 0; idx < aInput.length; ++idx) {
31 byte b = aInput[idx];
32 result.append( digits[ (b&0xf0) >> 4 ] );
33 result.append( digits[ b&0x0f] );
34 }
35 return result.toString();
36 }
Der Aufruf erfolgt dann zum Beispiel so: String myUniqueID= myUniqueNumber();
Jetzt speicherst Du Dir myUniqueID in einer Sharedpreference oder in der DB und prüfst beim Aufruf der App ob dieser Wert existiert. Wenn er dort existiert, verwendest Du diesen, ansonsten erzeugst und speicherst Du die ID.
So eine ID sieht dann bspw. so aus: 02be382bd5c6c7a1147f2bf7dcaa71274a242b92
— geändert am 18.03.2012, 11:18:24