web-dev-qa-db-ja.com

実行中のSamsungデバイスのシリアル番号Android

私はSamsungGalaxy Tab 2.0(7 ")を持っています

このデバイスの背面には、フォーマットのシリアル番号があります

RF3C6000MNA

デバイスの設定に移動し、[デバイスについて]-> [ステータス]-> [シリアル番号]を選択すると、この番号も表示されます。

ただし、この数値をプログラムで抽出する方法を見つけることはできません。

シリアル番号の抽出に関する記事をたくさん見てきましたが、これではまったく異なる番号が返されます。 (Android.os.Build.SERIALを使用)

IMEIとMACアドレスはすでに抽出しているので、このためのコードは必要ありません。

18
Rich S
public static String getManufacturerSerialNumber() {
  String serial = null; 
  try {
      Class<?> c = Class.forName("Android.os.SystemProperties");
      Method get = c.getMethod("get", String.class, String.class);
      serial = (String) get.invoke(c, "ril.serialnumber", "unknown");
  } catch (Exception ignored) {}
  return serial;
}

編集:この回答からしばらく経ちましたが、ここにいくつかの更新されたポイントがあります:

  • OPはGalaxy Tab 2について質問しましたが、その答えは確かにril.serialnumberでした(3G以外のモデルでも-これを参照してください- 要点 )。ひまんしゅの答えによるとGalaxy Tab 3sys.serialnumberを使用しています(これも この答え に裏打ちされています)。 sys.serialnumberRadio Interface Layerを表し、ほとんどのタブレットには(ril.*、それぞれ)が装備されていないため、ril.serialnumberはタブレットに適しています。電話の方が理にかなっています)。
  • デバイスのシリアル番号(つまり、パッケージのシリアル番号-Settings.Secure.Android_IDと混同しないでください)を取得するための標準APIはありません。 API全体に散在する他のさまざまな「一意の」識別子)。これは、デバイスのシリアルをどこに保存するかを決定するのはメーカーの責任であることを意味します(あるとしても)。 S3 Miniではril.serialnumberNexusOneではro.serialnoGist )、onGalaxy Tab 2it's ril.serialnumber、onGalaxy Tab 3/4それはsys.serialnumberLenovo Tabそれは- 上記のいずれでもない 。これらの設定は、デバイスのシリアルを探すときに通常の疑いがあるように見えますが、当然のことと見なされるべきではなく、したがって、固有のアプリのインストールを追跡するために信頼されるべきではありません。
30
dev

Adbシェルでgetpropコマンドを使用して、どのファイルに正しいシリアル番号が含まれているかを確認できます。多くの場合、シリアル番号はさまざまなファイルにあり、コードはデバイス固有である必要があります。

サムスンタブ3の場合、次のコードを使用できます。

try {

        Class<?> c = Class.forName("Android.os.SystemProperties");

        Method get = c.getMethod("get", String.class, String.class);

        serialnum = (String) (get.invoke(c, "sys.serialnumber", "unknown"));

    } catch (Exception ignored) {

        serialnum = "unknown";

    }
2

製品にはBuildクラスを使用しています。これが一致するかどうかを確認します: http://developer.Android.com/reference/Android/os/Build.html#SERIAL

0
jsmith