要在应用程序安装/重新安装之间唯一地标识一个应用程序,您需要获取其硬件ID并将其用作您的凭据/密钥.
要获取hardwareID,可以使用以下方法:
public static String getHardwareId(Context context) {
return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
}
它与UUID部分等效,但以下情况除外:如果在设备上执行了出厂重置,则该值可能会更改.
我之所以称其为“部分等效”是因为:
HardwareID是一个64位数字(作为十六进制字符串),在用户首次设置设备时会随机生成,并且在用户设备的整个生命周期内应保持不变.如果在设备上执行了出厂重置,则该值可能会更改.
注意:当一个设备有多个用户(在运行Android 4.2或更高版本的某些设备上可用)时,每个用户都显示为完全独立的设备,因此ANDROID_ID值对于每个用户都是唯一的.
但这遇到了第二个问题:在哪里以及如何存储它;将其存储在SharedPreferences中是无用的,因为如果卸载了该应用程序,则将被擦除.与/data/data/your.package.name/my_stored_keys文件夹相同,因为在卸载过程中也会从手机中删除该文件夹.
如果您希望在卸载和重新安装应用程序之间保持一致,则需要将其保存在服务器端.