現在、私のアルゴリズムは IMEI のみに基づいています。ここに問題があります: 一部のデバイスには無線モジュールがないため、IMEI もありません。IMEI を使用せずに ID を生成するには、一意のパラメーター (CPU ID、フラッシュ ID、MAC など) が必要です。Javaでそれらを取得する方法。できればルートなしでありがとう
5 に答える
Build.SERIAL
Android デバイスの一意のシリアル番号を取得するために使用します。これは文字列値を返します。エミュレーターでは、このコードは文字列 "unknown" を返す場合があります。しかし、デバイスで試してみてください。それは実際に動作します... :)
String id=Build.SERIAL;
ANDROID_ID
具体的には、Settings.Secure.ANDROID_IDです。これは、デバイスが最初に起動したときに生成および保存される64ビットの量です。デバイスがワイプされるとリセットされます。
ANDROID_IDは、一意のデバイス識別子に適しているようです。欠点があります。まず、2.2より前のAndroidのリリース(「フローズンヨーグルト」)では100%信頼できるわけではありません。また、大手メーカーの人気のある受話器には、すべてのインスタンスが同じANDROID_IDを持っている、広く観察されているバグが少なくとも1つあります。
組み込みの Setting.secure を使用してデバイス ID を取得できます。このデバイス ID は、工場出荷時の設定にリセットするまで固定されています。
Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID);
これは、工場出荷時の設定にリセットするまで安定しているデバイスの一意の ID です。
以下のコードは、デバイス ID を取得するのに役立ちます
String ts = Context.TELEPHONY_SERVICE;
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(ts);
String imsi = mTelephonyMgr.getSubscriberId();
String imei = mTelephonyMgr.getDeviceId();