2

デバイスを一意に識別する方法を実装しています。

建築家は私に次の仕様を送ってくれます:

Wifi + 3Gを搭載したデバイス:IMEIコード

デバイスWifiのみ-MacAddress

どちらも、IDを完成させるために製造元とモデルが必要です。

私の質問は次のとおりです。

  1. デバイスからIMEIを取得するにはどうすればよいですか?

  2. デバイスからメーカーとモデルを取得するにはどうすればよいですか?(Buildクラスには定数がいくつかあるようですが、どこで使用するかわかりません)

  3. 3Gのみのデバイスはありますか?

  4. デバイスがwifiのみ、wifi + 3g、または存在する場合のみ3gであるかどうかを確認するにはどうすればよいですか?

また、一意の識別子の提案も利用できます。

PS:私はすでにWifiManagerを介してMacAddresを入手することができます。

4

4 に答える 4

2

TelephonyManager の getDeviceID メソッドを使用できます。IMEI または MEID が返されます。ビルド情報については、android.os.Build と android.os.Build.VERSION を参照してください。また、アプリケーションのインストールを一意に識別する場合は、アプリのインストールの識別に関する開発者ブログの投稿を確認する (および/またはアーキテクトを表示する) ことをお勧めします。

于 2011-05-17T15:56:53.260 に答える
2
  1. IMEI を取得する方法は、この質問で見つけることができます: How to get the device's IMEI/ESN programmatically in android? ;
  2. MANUFACTURER と MODEL はandroid.os.BUILDクラスから取得できます。
  3. 理論的には、はい、Wi-Fi を備えていなくても 3G を備えたデバイスが存在する可能性があります。しかし、私は見たことがありません。
  4. getSystemService(WIFI_SERVICE)が返される場合はnull、Wi-Fi がありません。
于 2011-05-17T15:56:56.977 に答える
2
  1. android.telephony.TelephonyManager.getDeviceId() は、「GSM の IMEI と CDMA 電話の MEID または ESN」を取得します。

  2. Build.MODEL は静的フィールドなので、最初に android.os.Build をインポートしている限り、そのように使用できます。

  3. かなり可能性があります。

  4. Context.getSystemService(Context.WIFI_SERVICE) を呼び出して、それが null かどうかを確認することもできますが、wifi がなくてもサービスがまだ存在する可能性があると思います (そのような場合、wifi をチェックして DISABLED が返されることを期待します)。 )

于 2011-05-17T15:58:13.537 に答える
2

これらの質問は、しばらくの間 Android 開発者を悩ませてきました。一意の Android デバイス ID はありますか?を参照してください。

Android 開発チームは、次のブログでこれらの問題に直接対処しようとしました: http://android-developers.blogspot.com/2011/03/identifying-app-installations.html

最後の質問への回答: SIM/MAC/Whatever を照会するときに null をテストし、それに応じて行動します。MAC が null を返す場合があることが報告されています。私の最初のリンクを参照してください。

于 2011-05-17T15:58:23.560 に答える