14

私の最高の質問の1つを見たIs there a unique Android device ID?MarshMallow警告後の一意のAndroidデバイスID「デバイスIDの取得は推奨されていません」

私は一意のIDを取得するために次のコードを使用しました。デバイス識別子を取得するためにはgetStringを使用し

が推奨されていません。

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); にホバー上のいくつかの警告を取得しています。

高い値の 不正防止と高度なテレフォニーユースケースの場合以外は、デバイス識別子の使用はお勧めしません。 ユースケースを広告するには、AdvertisingIdClient $ Info#getIdを使用し、アナリティクスについては、 InstanceId#getIdを使用します。

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

+2

IMEI番号は一意の識別子として使用できます。そして、これはちょうど今のハッカーのルート電話機としての警告であり、デバイスIDを変更します。 –

+0

復元工場の後で変更されます。私はそれを望んでいない。 –

+0

いいえ、IMEIどんな場合でも変更はありません。 –

答えて

-1

本当にこの警告を解決することはできません。

しかし、@SuppressLint( "HardwareIds")を追加することで警告を無効にすることができます。

この警告では、Lintは公開する必要があるかどうかを再考する機会を与えています。

関連する問題