作成する画面
- ボタンをクリックすると携帯端末の電話番号と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" />