有关如何为安装您的应用程序的每个 Android 设备获取唯一标识符的详细说明,请参阅此官方 Android 开发人员博客帖子:
http://android-developers.blogspot.com/2011/03/identifying-app-installations.html
似乎最好的方法是让您在安装时自己生成一个,然后在重新启动应用程序时阅读它。
我个人认为这是可以接受的,但并不理想。Android 提供的标识符在所有情况下都不起作用,因为大多数标识符取决于手机的无线电状态(wifi 开/关、蜂窝开/关、蓝牙开/关)。其他像 Settings.Secure.ANDROID_ID 必须由制造商实现,不保证是唯一的。
以下是将数据写入安装文件的示例,该文件将与应用程序在本地保存的任何其他数据一起存储。
public class Installation {
private static String sID = null;
private static final String INSTALLATION = "INSTALLATION";
public synchronized static String id(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();
}
}