電話とタブレットで機能する Android デバイスに一意の ID を使用したいと思います。(IMEI は SIM カードのないデバイスでは機能せず、MAC アドレスが null を返す場合があります)
android.os.Build.SERIAL が一意かどうかはわかりません。
誰もこれについて知っていますか?
ありがとうございます。それでは、お元気で。
はい。ただし、API レベル 9 でのみ追加されたものであり、すべてのデバイスに存在するわけではないことに注意してください。以前のプラットフォームで一意の ID を取得するには、MAC アドレスや IMEI などを読み取る必要があります。
一般に、考えられるすべての ID を読み取って、利用可能なものを使用してください。ガイダンスについては、この記事を参照してください。
Build serial と android ID を使用して、独自の一意の ID を作成できます。
String serial = Build.SERIAL;
String android_id =Secure.getString(context.getContentResolver(),
Secure.ANDROID_ID);
String myKey=serial +android_id ;
シリアルは API:9 でのみ公開されました。ただし、リフレクションを使用して古いバージョンで取得できます。ただし、ドキュメントには「利用可能な場合」と記載されているため、それに依存しないでください。
String deviceSerial = (String) Build.class.getField("SERIAL").get(
null);
存在する場合、一意であることが期待されます。ただし、このプロパティが設定されているという保証はありません。また、API 9 です。残念ながら、デバイスを一意に識別する簡単な方法はありません。上記の SERIAL のようないくつかのプロパティは存在する可能性があり、ANDROID_ID は一意ではないものもあり、MAC のようなものは WIFI の存在またはその状態に依存します (wifi モジュールがオフの場合、その MAC を読み取ることができない場合があります)。IMEI のようなものは、デバイスが電話モジュールを取得しても読み取ることができません。したがって、最善のアプローチは、できるだけ多くのデータを収集し、一意のデバイス ID と見なされる可能性が最も高いものを作成することです。
MAC、IMEI、SERIAL の組み合わせはどうですか?
それらがすべて存在しない可能性があるという事実に対処する必要があります。SIMなしの古い電話で。
MACがnullを返すのは奇妙だと思います。モバイルデバイスにMACがないことは意味がないため、これは不可能です。
2 つの MAC アドレスが可能ですが、場合によってはアクセスできない場合があります。