Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Android開発】デバイスのシリアル番号を取得する方法をサンプルコード付きで解説

このチュートリアルでは、Androidアプリからデバイスのシリアル番号を取得して画面に表示する方法を、実際のサンプルコードとともにわかりやすく解説します。

シリアル番号とは?

シリアル番号は、各Androidデバイスに割り当てられた固有の識別子です。デバイス管理やサポート対応などに活用できます。Androidでは Build.SERIAL フィールドを使うことで簡単に取得できますが、Android 6.0(API 23)以降では READ_PHONE_STATE 権限が必要になる点に注意してください。

実装手順

ステップ1:新規プロジェクトの作成

Android Studioを起動し、「File」→「New Project」を選択します。必要な情報をすべて入力して、新しいプロジェクトを作成しましょう。

ステップ2:レイアウトファイルの編集

res/layout/activity_main.xml に以下のコードを追加します。ボタンをタップするとシリアル番号を取得できる、シンプルな構成です。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:tools="https://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">
   <TextView
      android:id="@+id/textView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:layout_below="@id/button"
      android:layout_marginTop="16sp"/>
   <Button
      android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:onClick="showDeviceInfo"
      android:text="Get Serial Number"
      android:layout_centerInParent="true"/>
</RelativeLayout>

ステップ3:MainActivity.java の編集

src/MainActivity.java に以下のコードを追加します。ここでは、実行時パーミッション(READ_PHONE_STATE)のリクエスト処理と、TelephonyManager を使ったデバイス情報の取得を行っています。

import android.Manifest;
import android.app.AlertDialog;
import android.content.pm.PackageManager;
import android.support.v4.content.ContextCompat;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
   public static final int REQUEST_CODE_PHONE_STATE_READ = 100;
   private int checkedPermission = PackageManager.PERMISSION_DENIED;
   TelephonyManager manager;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      checkedPermission = ContextCompat.checkSelfPermission(MainActivity.this,
      Manifest.permission.READ_PHONE_STATE);
      if (Build.VERSION.SDK_INT >= 23 && checkedPermission != PackageManager.PERMISSION_GRANTED) {
         requestPermission();
      } else
         checkedPermission = PackageManager.PERMISSION_GRANTED;
   }
   private void requestPermission() {
      Toast.makeText(MainActivity.this, "Requesting permission", Toast.LENGTH_SHORT).show();
      this.requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE},
      REQUEST_CODE_PHONE_STATE_READ);
   }
   public void showDeviceInfo(View v) {
      manager = (TelephonyManager) getSystemService(this.TELEPHONY_SERVICE);
      AlertDialog.Builder dBuilder = new AlertDialog.Builder(this);
      StringBuilder stringBuilder = new StringBuilder();
      if (checkedPermission != PackageManager.PERMISSION_DENIED) {
         dBuilder.setTitle("Device Info");
         stringBuilder.append("SERIAL : " + Build.SERIAL + "\n");
      } else {
         dBuilder.setTitle("Permission denied");
         stringBuilder.append("Can't access device info !");
      }
      dBuilder.setMessage(stringBuilder);
      dBuilder.show();
   }
   @Override
   public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
      switch (requestCode) {
         case REQUEST_CODE_PHONE_STATE_READ:
         if (grantResults.length > 0 && grantResults[0]== PackageManager.PERMISSION_GRANTED ) {
            checkedPermission = PackageManager.PERMISSION_GRANTED;
         }
         break;
      }
   }
}

ステップ4:AndroidManifest.xml の編集

androidManifest.xml に以下のコードを追加します。インターネットアクセスと READ_PHONE_STATE 権限を宣言しています。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
   package="app.com.sample">
   <uses-permission android:name = "android.permission.INTERNET"/>
   <uses-permission android:name = "android.permission.READ_PHONE_STATE" />
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

アプリの実行

それでは、アプリケーションを実行してみましょう。ここでは、実際のAndroidスマートフォンがパソコンに接続されているものとします。Android Studioからアプリを実行するには、プロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。実行デバイスとして自分のモバイル端末を選択すると、端末側に以下のようなデフォルト画面が表示されます。

【Android開発】デバイスのシリアル番号を取得する方法をサンプルコード付きで解説

補足:新しいAndroidバージョンでの注意点

Build.SERIAL は Android 8.0(API 26)以降で非推奨(deprecated)となっています。Android 8.0以降をターゲットとする場合は、Build.getSerial() メソッドを使用し、必ず事前に READ_PHONE_STATE 権限をリクエストしてください。また、プライバシーに配慮した一意識別子が必要な場合は、Settings.Secure.ANDROID_ID や Firebase Installations ID の利用も検討するとよいでしょう。

  1. iPhoneのシリアル番号を確認する4つの方法を徹底解説

    iPhoneのシリアル番号を調べる方法は、実は1つや2つではなく、なんと4つもあります。驚きですよね?もっとも一般的なのは、本体の「設定」から確認する方法や、外装箱に記載された情報を見る方法です。シリアル番号とは、iPhone1台ひとつに割り当てられた固有のコードのこと。特に中古のiPhoneを購入・売却する際には、端末が本物かどうかを見極めるために欠かせない情報です。理由は何であれ、いつかはシリアル番号(IMEI番号)を確認したくなる場面が必ず訪れるはずです。では、iPhoneのシリアル番号は具体的にどうやって調べればよいのでしょうか?ここでは、知っておいて損のない、シリアル番号を確認するた

  2. 紛失したAndroidスマホを探す方法|Google「デバイスを探す」の使い方を徹底解説

    Androidスマートフォンをどこかに置き忘れて見つからない——そんな経験はありませんか?オフィスでも、自宅でも、ホテルの部屋でも、スマホが行方不明になると不安になりますよね。しかし、慌てる前に試せる追跡方法はいくつかあります。適切な手順を踏めば、パニックになる前に端末を取り戻せる可能性は十分にあります。 ほとんどのAndroidスマートフォンは、Googleが提供する「Find My Device(デバイスを探す)」を使って、遠隔から位置の特定やロックが可能です。この記事では、Androidスマホやタブレットで「デバイスを探す」を利用する方法、紛失時に端末を見つける手順、そしてどうしても見つ