20

一番の質問の 1 つを見ました。固有の Android デバイス ID はありますか?

編集:

Android 10 のソリューションも必要です。

次のコードを使用して、一意の ID を取得しました。

public static String getDeviceId(Activity context) {

    PermissionsChecker checker = new PermissionsChecker(context);

    if (checker.lacksPermissions(Manifest.permission.READ_PHONE_STATE))
        PermissionsActivity.startActivityForResult(context, 0, REQUIRED_PERMISSION);
    else {
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

        final String tmDevice = tm.getDeviceId();
        final String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);

        UUID deviceUuid = new UUID(androidId.hashCode(), ((long) tmDevice.hashCode() << 32));

        return deviceUuid.toString();
    }
    return null;
}

しかし、ホバーすると警告が表示されます

tm.getDeviceId();

Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); 次のように:

getStringを使用してデバイス識別子を取得することはお勧めしません。

デバイス識別子の使用は、価値の高い不正防止や高度なテレフォニーのユースケース以外では推奨されません。広告のユースケースの場合は使用AdvertisingIdClient$Info#getIdし、分析 の場合は使用しますInstanceId#getId.

解決策はありますか?それは有害ですか、それとも何か他のものですか?

4

4 に答える 4