我已经尝试过这些方法,如IMEI,MEID,mac地址,android_id,但都不行。
如何在Android中获得独特的设备数量?
答案 0 :(得分:1)
Android设备有多个唯一标识符
<强> IMEI 强>
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String imei = TelephonyMgr.getDeviceId();
许可
android.permission.READ_PHONE_STATE
WLAN MAC地址
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String wanMAC = wifi .getConnectionInfo().getMacAddress();
许可
android.permission.ACCESS_WIFI_STATE
蓝牙MAC地址
BluetoothAdapter bluetoothAdapter =BluetoothAdapter.getDefaultAdapter();
String bluetoothMAC = bluetoothAdapter .getAddress();
许可
android.permission.BLUETOOTH
Android ID
String androidID = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
答案 1 :(得分:1)
由于大多数应用程序的要求是识别特定安装而不是物理设备,因此如果要使用UUID类,则为用户获取唯一ID的良好解决方案。来自Google的Reto Meier在Google I / O演示文稿中提供了以下解决方案:
private static String uniqueID = null;
private static final String PREF_UNIQUE_ID = "PREF_UNIQUE_ID";
public synchronized static String id(Context context) {
if (uniqueID == null) {
SharedPreferences sharedPrefs = context.getSharedPreferences(
PREF_UNIQUE_ID, Context.MODE_PRIVATE);
uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
if (uniqueID == null) {
uniqueID = UUID.randomUUID().toString();
Editor editor = sharedPrefs.edit();
editor.putString(PREF_UNIQUE_ID, uniqueID);
editor.commit();
}
}
return uniqueID;
}
UUID.randomUUID()方法为特定安装生成唯一标识符。您只需存储该值,您的用户将在下次启动应用程序时被识别。您还可以尝试将此解决方案与Android备份服务相关联,以便即使用户在其他设备上安装您的应用程序,也可以向用户提供信息。
您可以在https://medium.com/@ssaurel/how-to-retrieve-an-unique-id-to-identify-android-devices-6f99fd5369eb
了解详情答案 2 :(得分:1)
在Android 10中,您无法访问不可重置的设备ID,例如IMEI,MEID等。
因此,我认为您最好的机会是创建一个UUID。您可以使用下面的代码,并将此UUID保存到数据库或首选项文件中。
String uniqueID = UUID.randomUUID().toString();
作为一个随机数,每次调用此方法时,它都会返回一个不同的代码,我想这不是您要查找的。 p>
要从UUID获得“唯一ID”,最好的选择是下面的代码。它可以正常工作,但是文档要求避免使用Android_ID。
String androidId = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.ANDROID_ID);
UUID androidId_UUID = UUID
.nameUUIDFromBytes(androidId.getBytes("utf8"));
该代码将为您提供几乎唯一的代码,因为如果用户将其重置为出厂设置,则该数字将被更改。
我正在寻找获取唯一ID的另一种方法,但是直到现在,我仍然找不到。
这里有一些应该有用的Android开发人员文档。 定义唯一ID的良好习惯 https://developer.android.com/training/articles/user-data-ids
如何根据用例定义唯一的ID:
https://developer.android.com/training/articles/user-data-ids#common-use-cases
我希望这可以帮助某人。
答案 3 :(得分:0)
要检索与您的设备相关联的唯一ID,您可以使用以下代码:
import android.telephony.TelephonyManager;
import android.content.Context;
// ...
TelephonyManager telephonyManager;
telephonyManager = (TelephonyManager) getSystemService(Context.
TELEPHONY_SERVICE);
/*
* getDeviceId() returns the unique device ID.
* For example,the IMEI for GSM and the MEID or ESN for CDMA phones.
*/
String deviceId = telephonyManager.getDeviceId();
/*
* getSubscriberId() returns the unique subscriber ID,
* For example, the IMSI for a GSM phone.
*/
String subscriberId = telephonyManager.getSubscriberId();
安全的Android ID
String androidId = Settings.Secure.getString(getContentResolver(),
Settings.Secure.ANDROID_ID);
答案 4 :(得分:0)
我的项目中使用了以下代码
要获取唯一的 Android ID
static String androidID = Settings.Secure.getString(MyApplication.getContext().getContentResolver(), Settings.Secure.ANDROID_ID);
我将其用作全局对象,这样我就可以在项目中的任何地方使用