【質問】android.os.Build.SERIALの取得値がunknownに

5,341 views
Skip to first unread message

y.komaki

unread,
Nov 3, 2011, 10:02:40 PM11/3/11
to 日本Androidの会
こんにちはkomakiです

端末の識別にandroid.os.Build.SERIALを利用しようと考えて
値を取得しようと思ったのですが結果が"unknown"になってしまいます。

android.os.Build.SERIALを利用するのに
android.permission.READ_PHONE_STATEのような
uses-permissionは必要はなく、
adb get-serialnoしたときの値がアプリで取得できる
と認識しておりますが、間違いないでしょうか?

試した環境は
アプリ
APILevel 9

端末
IS11S(acro) OS 2.3.3
ADV APILevel 9

ソースは単純に
String sSerial = android.os.Build.SERIAL;
としています。

アプリ上では"unknown"でしたが、
adb get-serialnoを行ったときは想定した値が出力されました。

上記の実装ではandroid.os.Build.SERIALは取得できないのでしょうか?

また、取得できない場合の制限事項や取得できた実績等情報がありましたら
ご教示をお願いしたく存じます。
よろしくお願いします。

mizmit1222

unread,
Nov 4, 2011, 3:18:22 AM11/4/11
to 日本Androidの会
みずの@組み込みWGです。

UUIDの使用が推奨されています。

Identifying App Installations
http://android-developers.blogspot.com/2011/03/identifying-app-installations.html

上記記事を安藤さんが訳した記事があります。

インストーレーションを区別するアプリケーション
http://d.hatena.ne.jp/androidzaurus/20110331/1301560781

ではでは。

y.komaki

unread,
Nov 4, 2011, 5:33:51 AM11/4/11
to 日本Androidの会
komakiです

みずの@組み込みWGさん

記載して頂いたURL拝見しました。

Serial Numberについての記載で
Devices without telephony are required to report a unique device ID
here; some phones may do so also.

の一文に"Devices without telephony"ということあったので、電話機能を持っている端末はunknownになるのでしょう


リファレンスのandroid.os.Buildには
A hardware serial number, if available. Alphanumeric only, case-
insensitive.
とだけで、電話機能の有無については言及されていなかったので、使えると信じ切っていましたw

今回の質問の目的として、端末固有のIDが欲しかったのですが、
UUIDについてはアプリ再インスト―ル後の初回起動時に前回と違った値になってしまうと思うので
その要求は満たされないということがわかりました。

AndroidIDやmacアドレスも考えましたが
某端末だとすべて同じになり、また書き換えも可能で完全ではないようですので
固有IDは取れないという前提にして、自分の目的を果たせる別の方法・妥協案を考えてみます。

ご回答ありがとうございました。

Aska

unread,
Nov 4, 2011, 11:49:27 AM11/4/11
to 日本Androidの会
askaです.

DeviceIdは, 以下のようなコードで取得できます.

TelephonyManager manager =
(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String deviceId = manager.getDeviceId();

注) READ_PHONE_STATEのパーミションが必要です.

SH-03C(SHARP)/Android 2.2では, adb get-serialnoで取得できる値と同じ値が
取得できています.

以上.

On 11月4日, 午前11:02, "y.komaki" <ageha....@gmail.com> wrote:

mizmit1222

unread,
Nov 6, 2011, 10:46:45 PM11/6/11
to 日本Androidの会
みずの@組み込みWGです。

記事中にもあるように、ある端末を他人に譲渡し同じアプリを
インストールするケースを考えると、初期化でリセットされない
値を元に判別することは、深刻な脆弱性となります。

ではでは。

y.komaki

unread,
Nov 8, 2011, 6:43:10 AM11/8/11
to 日本Androidの会
komakiです

>askaさん
情報ありがとうございます。
記載して頂いた方法ですと、電話機能を持たないタブレットなどで取得できないという情報があったため採用しておりませんでした。
(実機がない為確認はできていませんが。。。)

>みずの@組み込みWGさん
端末固有ID+こちらで管理しているIDを端末に発行することで管理しようと考えておりました。
「他人に譲渡」というパターンは考えていなかったため、こちらも考慮してみます。

お二方ともありがとうございました。
Reply all
Reply to author
Forward
0 new messages