web-dev-qa-db-ja.com

Androidデバイスのハードウェアシリアル番号を取得する

Androidアプリがインストールされているデバイスのハードウェアシリアルコードを取得する必要があります。このハードウェアシリアル番号は、Settings > About Device > Status > Serial numberで確認できます。

Settings.Secure.Android_ID or Android.os.Build.SERIALを使用して取得しますが、どちらも機能しませんでした。つまり、探している一意の識別子が得られませんでした。たとえば、Android.os.Build.SERIALは、コマンドadb devicesを実行したときにADBに表示される一意のIDを取得しました。

この質問の目的は、私を助けることができる別の一意の識別子を見つけることではなく、デバイスのハードウェアのシリアル番号を取得することだけであることに注意してください。

助けてくれてありがとう。

編集:

文字列Android.os.BUILD.SERIALによって提供される値を探していないことを明確にしてください。私はその価値を得る方法を知っていますが、私はそれに興味がありません。

私はSamsungデバイスを持っているため、使用したシリアル番号はAndroid.os.BUILD.SERIALで提供されているものとは異なります。

18
Storo

解決策は非常に簡単です。

Class<?> c = Class.forName("Android.os.SystemProperties");
Method get = c.getMethod("get", String.class, String.class);
serialNumber = (String) get.invoke(c, "sys.serialnumber", "Error");
if(serialNumber.equals("Error")) {
    serialNumber = (String) get.invoke(c, "ril.serialnumber", "Error");
}

これにより、ほとんどのサムスンデバイスのシリアル番号がわかります。 「sys.serialnumber」値を使用してSM-T210(Galaxy Tab 3)およびSM-T230(Galaxy Tab 4)タブレットのシリアル番号を取得しますが、おそらくもっと多くのSamsungタブレットで動作します。 「ril.serialnumber」は、Samsung GT-I8550L(Galaxy Win)の値を取得するためのものです。

これがお役に立てば幸いです。

17
Storo