ダイヤルした場合 *#*#8255#*#* 、私はAndroid _Android-
__35c2acdd...
_で始まるデバイスIDを取得します
Settings.Secure.getString(getContentResolver(), Settings.Secure.Android_ID)
を使用すると、結果は_a96b4b27...
_で始まります
_((TelephonyManager) Context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId()
_を使用すると、結果は_3538330...
_で始まります
これらのIDの違いは何ですか?どうすれば結果を取得できますか
*#*#8255#*#* ダイヤル?
[〜#〜] imei [〜#〜]
IMEIは、テレフォニーモジュールの「 [〜#〜] mac [〜#〜] 」です。電話がGSM/GPRS/HSPDA/etcを介して接続するときに使用する一意のIDです。 GSMネットワークはそれを使用して、電話からの通話とデータをGSMネットワーク経由でインターネット(IPネットワーク)へのゲートウェイまでルーティングします。
テレフォニーモジュールは、GSMまたはCMDAのいずれかの電話ネットワークを処理するチップまたは回路基板であり、多くの場合、リムーバブルSIMカード用のスロットがあります。一部の電話には、複数のテレフォニーモジュールがあります(アクティブなデュアルまたはマルチSIM電話)。各テレフォニーモジュールには、独自のIMEIがあります。
製造業者は、製造中に各電話(厳密にはテレフォニーモジュール)に一意のIMEIを提供します。ただし、適切なソフトウェアを使用している場合、通常は番号を書き換えることができます。これは、多くの場合、電話が盗まれた後に行われ、電話に新しいIDおよびバイパス盗難電話ブロックシステムが付与されます。
IMEIは、 TelephonyManager.getDeviceId() APIを使用してプログラムで取得できます。
CDMA電話には、同じAPIを使用して取得された場合でも、ESNまたはMEIDがあり、これらは 異なる長さと形式 です。
テレフォニーモジュールのないAndroidデバイス-たとえば、多くのタブレットやTVデバイス-にはIMEIがありません。 Schlangi がコメントされているように、テレフォニーモジュールfakeIMEIを持たない一部のデバイスは、IMEIの存在が(常に)デバイスを保証しないテレフォニーモジュールがあります。
Android_ID
Android_IDは、携帯電話の別の一意の番号です。これは、OSが初めて起動するときに自動的に生成されます(この方法で行うと、製造元にとってmuch生産ラインからのステップ)。
Android_IDは変更できます(実際に変更されます)。例えば:
主に開発者が使用します(例:adb
を使用したデバイスの識別と接続)
Android_IDを使用して、Android上記の警告が与えられたデバイスを識別できます。現実的には、デバイスの寿命のかなりの部分でデバイスを一意に識別しますが、信頼できません。
また、多くのデバイスがsameAndroid_IDを与えたFroyoにバグがあったことに注意してください。これは bug です
その他の識別子
デバイスを識別するために使用できる他の多くのものがあります:
その他の注意事項
すべてのAPIにアクセスするには特定のアクセス許可が必要です。したがって、すべてのAPIにアクセスしようとすると、Google Playストアでのアプリのアクセス許可はかなり寛容に見えます。
このリンクは他のすべての利用可能なオプションも説明していると思います https://Android-developers.googleblog.com/2011/03/identifying-app-installations.html
ウェブで発見:
private static final Uri URI = Uri.parse("content://com.google.Android.gsf.gservices");
private static final String ID_KEY = "Android_id";
String getAndroidId(Context ctx) {
String[] params = { ID_KEY };
Cursor c = ctx.getContentResolver()
.query(URI, null, null, params, null);
if (!c.moveToFirst() || c.getColumnCount() < 2)
return null;
try {
return Long.toHexString(Long.parseLong(c.getString(1)));
} catch (NumberFormatException e) {
return null;
}
}
許可を追加:
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
ただし、これが文書化されたIDであるとは思わず、GTalkが更新された場合には機能しない可能性があるため、注意が必要です。
ソース: http://blog.codepainters.com/2012/01/17/how-to-obtain-gtalk-Android-id/
また、一見する価値があります: http://www.toxicbakery.com/Android-development/getting-google-auth-sub-tokens-in-your-Android-applications/
Android電話で一意の識別子を取得する方法がいくつかあります。
Android IDこれは、デバイスの最初の起動時に生成される64ビットの16進文字列です。通常、工場出荷時設定にリセットしない限り、変更されません。
Secure.getString(getContentResolver()、Secure.Android_ID);
Android IDは、nullになることがあるため信頼できないと見なされます。ドキュメントには、「工場出荷時のリセット時に変更できる」と記載されています。この文字列はルート化された電話でも変更できます。
String m_szAndroidID = Secure.getString(getContentResolver(), Secure.Android_ID);
Returns: 9774d56d682e549c . No special permissions required.
2. WLAN MACアドレス文字列は、デバイスIDとして使用できる別の一意の識別子です。読む前に、プロジェクトにAndroid.permission.ACCESS_WIFI_STATE権限があることを確認するか、WLAN MACアドレスがnullになることを確認する必要があります。
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String m_szWLANMAC = wm.getConnectionInfo().getMacAddress();
Returns: 00:11:22:33:44:55 (not a real address since this is a custom ROM , as you can see the MAC address can easily be faked).
WLAN doesn't have to be on, to read this value.
3. Android Bluetooth対応デバイスで利用可能なBT MACアドレス文字列は、プロジェクトにAndroid.permission.BLUETOOTH権限がある場合に読み取ることができます。
BluetoothAdapter m_BluetoothAdapter = null; // Local Bluetooth adapter
m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_szBTMAC = m_BluetoothAdapter.getAddress();
戻り値:43:25:78:50:93:38 BTを読むためにオンにする必要はありません。 4. IMEIは、Android電話使用のデバイスのみ:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String szImei = TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE
これには、AndroidManifest.xmlに権限を追加する必要があります。ソフトウェアをインストールすると、ユーザーに通知されます:Android.permission.READ_PHONE_STATE。 IMEIはお使いの携帯電話に固有のもので、359881030314356のように見えます(0000000000000などの無効なIMEIを備えたプリプロダクションデバイスがない場合)。詳細情報 参照 このリンク。
IMEI
標準化団体による必須要件があり、パブリックネットワークのモバイルデバイスはIMEI番号によって一意に識別される場合があります
IMEIを設定するのは製造元の責任です。実際には、開発者は000000 ...や123456 ...のようなIMEIを見ることがあります...同じIMEIの電話が実稼働することもありますが、これはshouldが修正されるバグです...
Android_ID
デバイスの初回起動時にランダムに生成され、デバイスのライフタイム中は一定のままである64ビット数(16進文字列として)。(デバイスで工場出荷時設定へのリセットが実行されると、値が変更される場合があります。 )
Androidはメーカーを信頼せず、代替の一意のIDを提供します。
編集:
これは私が(IMEIの代わりに)得るものであり、Androidデバイスであるではない電話:
$ adb Shell dumpsys iphonesubinfo
Phone Subscriber Info:
Phone Type = GSM
Device ID = null
上記のすべての情報は、コードを理解するのに十分だと思います。
それでも、あなたはまだ「##8255##dial "(これを理解するのにどこか間違ったことがあるとすればすみません)
この背後にある理由は、Androidで作成されたUSSDコードに対する最新のバグ修正の1つであると思います。 (これについて詳しく読んで、デバイスがリストに載っているかどうかを確認してください。Web全体で)
最後に、Android IDをすぐに取得したい場合は、このアプリを使用することをお勧めします-
https://play.google.com/store/apps/details?id=com.redphx.deviceid&hl=en