作成する画面
- ボタンをクリックすると携帯端末の電話番号とSIMなどの情報を取得する
- 取得した情報を画面に表示する
※実機ではないと動作しません。エミュレーターだと落ちます。
作成手順
res/ layout /activity_main.xmlファイル
- 画面レイアウトの設定
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://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="携帯端末情報取得" android:textAlignment="center" android:textColor="@android:color/holo_green_dark" android:textSize="32sp" android:textStyle="bold" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/textView" android:layout_centerInParent="true" android:layout_marginBottom="20sp" android:text="電話番号取得" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:hint="SIMの国コードは?" android:textColor="@android:color/background_dark" android:textSize="16sp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="SIMのシリアル番号は?" android:layout_marginTop="390dp" android:layout_marginLeft="130dp" android:textColor="@android:color/background_dark" android:textSize="16sp" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="電話番号は?" android:layout_marginTop="420dp" android:layout_marginLeft="130dp" android:textColor="@android:color/background_dark" android:textSize="16sp" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="SIMの通信可能は?" android:layout_marginTop="450dp" android:layout_marginLeft="130dp" android:textColor="@android:color/background_dark" android:textSize="16sp" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="サービスプロバイダの名前は?" android:layout_marginTop="480dp" android:layout_marginLeft="130dp" android:textColor="@android:color/background_dark" android:textSize="16sp" /> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="デバイスIDは?" android:layout_marginTop="510dp" android:layout_marginLeft="130dp" android:textColor="@android:color/background_dark" android:textSize="16sp" /> </RelativeLayout>
src / MainActivity.kt
- 初回起動時に携帯端末取得して良いかのメッセージを表示する処理が走ります。
package com.hogehoge.phonenumber import android.Manifest import android.content.Context import android.content.pm.PackageManager import android.os.Bundle import android.telephony.TelephonyManager import android.widget.Button import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat class MainActivity : AppCompatActivity() { lateinit var button: Button lateinit var textView: TextView lateinit var textView2: TextView lateinit var textView3: TextView lateinit var textView4: TextView lateinit var textView5: TextView lateinit var textView6: TextView private lateinit var IMEINumber: String private val REQUEST_CODE = 101 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) title = "KotlinApp" textView = findViewById(R.id.textView) textView2 = findViewById(R.id.textView2) textView3 = findViewById(R.id.textView3) textView4 = findViewById(R.id.textView4) textView5 = findViewById(R.id.textView5) textView6 = findViewById(R.id.textView6) button = findViewById(R.id.button) button.setOnClickListener { val telephonyManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager if (ActivityCompat.checkSelfPermission(this@MainActivity, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this@MainActivity, arrayOf(Manifest.permission.READ_PHONE_STATE), REQUEST_CODE) return@setOnClickListener } // SIMの国コード textView.text = telephonyManager.getSimCountryIso() // SIMのシリアル番号 textView2.text = telephonyManager.getSimSerialNumber() // 電話番号 textView3.text = telephonyManager.getLine1Number() // SIMの通信可能 textView4.text = telephonyManager.getSimState().toString() //サービスプロバイダの名前 textView5.text = telephonyManager.getSimOperatorName() // デバイスID textView6.text = telephonyManager.deviceId } } // 初回起動時に携帯端末取得して良いかのメッセージを表示する処理が走ります。 override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String?>, grantResults: IntArray) { when (requestCode) { REQUEST_CODE -> { if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(this, "Permission granted.", Toast.LENGTH_SHORT).show() } else { Toast.makeText(this, "Permission denied.", Toast.LENGTH_SHORT).show() } } } } }
androidManifest.xml
- 下記の記述を追加します。
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />