从字面上来看其实不难理解,正如世界上没有两片完全相同的树叶一样,主要强调的是唯一性。
废话不多说,直接上代码
public class UUIDTool{
private static String Sid = null;
private static final String INSTALLATION = "INSTALLATION";
public synchronized static String getId(Context context) {
if (Sid == null) {
File installation = new File(context.getFilesDir(), INSTALLATION);
try {
if (!installation.exists())
writeInstallationFile(installation);
Sid = readInstallationFile(installation);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return Sid;
}
private static String readInstallationFile(File installation) throws IOException {
RandomAccessFile f = new RandomAccessFile(installation, "r");
byte[] bytes = new byte[(int) f.length()];
f.readFully(bytes);
f.close();
return new String(bytes);
}
private static void writeInstallationFile(File installation) throws IOException {
FileOutputStream out = new FileOutputStream(installation);
String id = UUID.randomUUID().toString();
out.write(id.getBytes());
out.close();
}
}
当调用UUIDTool.getId(这里传的是上下文)的时候,会生成一个32位小写的字符串。同一个手机多次运行,返回的是一个唯一的uuid,当然,不同的手机肯定是不一样的。自己也是通过多次测试得出的结论,可以直接拿来用。