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

Kotlinを使ってAndroidデバイスのシリアル番号を取得する方法【サンプルコード付き】

この記事では、Kotlinを使用してAndroidデバイスのシリアル番号を取得する方法を、実際のサンプルコードとともにわかりやすく解説します。権限のリクエスト方法から結果の表示まで、初心者の方でも理解できるよう順を追って説明していきます。

開発の流れ

手順1:Android Studioで新規プロジェクトを作成する

まず、Android Studioを開き、「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目をすべて入力して、プロジェクトを完成させてください。

手順2:レイアウトファイル(res/layout/activity_main.xml)の編集

次に、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:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="50dp"
      android:text="Tutorials Point"
      android:textAlignment="center"
      android:textColor="@android:color/holo_green_dark"
      android:textSize="32sp"
      android:textStyle="bold" />
   <TextView
      android:id="@+id/textView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@id/button"
      android:layout_centerInParent="true"
      android:layout_marginTop="16sp" />
   <Button
      android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:onClick="showDeviceInfo"
      android:text="Get Serial Number" />
</RelativeLayout>

手順3:MainActivity.kt の実装

src/MainActivity.kt に以下のコードを追加します。このコードでは、READ_PHONE_STATE 権限の状態をチェックし、未許可であればリクエストを行います。権限が許可されている状態でボタンをタップすると、Build.SERIAL からシリアル番号を取得してダイアログに表示します。

import android.Manifest
import android.app.AlertDialog
import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.telephony.TelephonyManager
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
class MainActivity : AppCompatActivity() {
   private val requestState = 100
   private var checkedPermission = PackageManager.PERMISSION_DENIED
   lateinit var manager: TelephonyManager
   override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)
      title = "KotlinApp"
      checkedPermission = ContextCompat.checkSelfPermission(this,
      Manifest.permission.READ_PHONE_STATE);
      if (Build.VERSION.SDK_INT >= 23 && checkedPermission !=
         PackageManager.PERMISSION_GRANTED) {
            requestPermission();
         } else
         checkedPermission = PackageManager.PERMISSION_GRANTED;
      }
      private fun requestPermission() {
         Toast.makeText(this, "Requesting permission", Toast.LENGTH_SHORT).show()
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            this.requestPermissions(arrayOf(Manifest.permission.READ_PHONE_STATE), requestState)
         }
      }
      fun showDeviceInfo(view: View) {
         manager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
         val dBuilder: AlertDialog.Builder = AlertDialog.Builder(this)
         val stringBuilder = StringBuilder()
         if (checkedPermission != PackageManager.PERMISSION_DENIED) {
            dBuilder.setTitle("Device Info")
            stringBuilder.append("""
            SERIAL : ${Build.SERIAL}
            """.trimIndent())
         } else {
            dBuilder.setTitle("Permission denied")
            stringBuilder.append("Can't access device info !")
         }
         dBuilder.setMessage(stringBuilder)
         dBuilder.show()
      }
      override fun onRequestPermissionsResult(requestCode: Int, vararg permissions: String?, grantResults: IntArray) {
         when (requestCode) {
            requestState -> if (grantResults.isNotEmpty() && grantResults[0] == PackageManager
            .PERMISSION_GRANTED) {
               checkedPermission = PackageManager.PERMISSION_GRANTED
            }
         }
      }
}

手順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.q11">
<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」アイコンをクリックしてください。実行デバイスとして自分のモバイル端末を選択すると、端末側にアプリの初期画面が表示されます。

画面上の「Get Serial Number」ボタンをタップすると、デバイスのシリアル番号がダイアログで表示されます。権限が拒否されている場合は「Permission denied」というメッセージが表示され、デバイス情報へアクセスできないことが通知されます。

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

なお、Build.SERIAL は API 26(Android 8.0)以降で非推奨となっています。特に Android 10(API 29)以降では、サードパーティ製アプリがシリアル番号を取得するには READ_PRIVILEGED_PHONE_STATE 権限が必要ですが、この権限はシステムアプリにしか付与されません。そのため、最新のOS環境を対象とする場合は、Settings.Secure.ANDROID_ID のような代替の識別子や、Firebase Installations などのデバイス固有IDサービスの利用を検討することをおすすめします。本記事のコードは、Android 9以前の環境で動作させる場合に有効です。

  1. Android端末のGPSが有効になっているか確認する方法【サンプルコード付き】

    はじめに この記事では、Android端末のGPS(位置情報)が現在有効になっているかどうかを、アプリからプログラム的に判定する方法を解説します。さらに、GPSが無効だった場合にユーザーへ通知し、位置情報の設定画面へ誘導するダイアログを表示するところまでを実装します。 実装手順 ステップ1:Android Studioで新規プロジェクトを作成する Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目を入力して、新しいプロジェクトを作成してください。 ステップ2:レイアウトファイル(activity_main.xml)を編集する

  2. iPhone・iPadのシリアル番号を確認する6つの方法|端末が起動しないときもOK

    iPhone、iPad、iPod touchのシリアル番号を確認する必要がある場面は意外と多くあります。Appleサポートに技術的な問題を相談するとき、保証状況を確認したいとき、あるいは自分が使っているiPhoneの機種を特定したいときなど、その理由はさまざまです。 理由が何であれ安心してください。この記事では、シリアル番号を調べるための6つの簡単な方法を紹介します。デバイスの電源が入らない、外箱が見つからないといったケースでも役立つ方法を含んでいます。なお、一部のサポート窓口では、シリアル番号の代わりにIMEIでの対応を受け付けてもらえることもあります。 1. デバイスの背面を確認する 最も