こんにちは。YOSHITAKA(@YOSHITA19704216)です。
- Kotlinで許可(パーミッション)の設定方法がわかります。
Contents
Kotlin マイクの使用許可(パーミッション)ダイアログの表示方法
許可(パーミッション)ダイアログは必須
- 公式サイトで理解できる方はこちらを参照してください。KotlinとJavaのバージョンが選択できます。
- 公式サイトで確認
アプリによって使用する許可は変わりますので、随時読み替えていってください。
MainActivity.ktの下部にファンクションを追加
ユーザーの選択結果を受け取るには、onRequestPermissionsResult()を設定する必要があります。
/** * マイク許可に使用 */ private const val PERMISSION_WRITE_EX_STR = 1 /** * マイクの使用許可の処理 * 表示した後の初期画面の設定を行う */ override fun onRequestPermissionsResult( requestCode: Int, permissions: Array<out String>, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) if (requestCode != 1234) { if (grantResults.all { it == PERMISSION_GRANTED }) { //許可された後の処理 メソッドを書きましょう } else { Toast.makeText( this, "マイク機能をOFFにしたまま起動します。", Toast.LENGTH_LONG ).show() //画面を閉じたい時はコメントインしてください。 // finish() } } }
1234はonRequestPermissionsResultでリクエストを判別するための数値。利用者で決めても良いのでなんの数字でも良いとのこと。
PERMISSION_WRITE_EX_STRも数値の意味はわかってないですが、1をセットしておきました
詳しくはわからないがセットしました。
onCreate内にて・・・
パーミッションを複数チェックすることもできるようですが今回は「Manifest.permission.RECORD_AUDIO」の一つだけを設定しました。
パーミッションの状態を確認するには、ContextCompat.checkSelfPermission()を使用します。
checkSelfPermission()の戻り値はint側で、許可されている場合は0、許可されていない場合は-1が返ってきます。
PackageManagerには、PERMISSION_GRANTED(0)と、PERMISSION_DENIED(-1)が定義されておりますので、結果の確認にはこれらを使用するのがいいらしいです。
private fun microphonePermission() { if (Build.VERSION.SDK_INT >= 23) { if (ActivityCompat.checkSelfPermission( this, Manifest.permission.RECORD_AUDIO ) != PackageManager.PERMISSION_GRANTED ) { ActivityCompat.requestPermissions( this, arrayOf( Manifest.permission.RECORD_AUDIO ), PERMISSION_WRITE_EX_STR ) } } }
- API23以前のバージョンでは許可ダイアログは不要なようです。
バージョンを知りたい方はこちらを確認してください。
パーミッションの宣言
AndroidManifest.xmlに、使用するパーミッションを宣言します。
今回はマイクとレコーダーを使うのでRECORD_AUDIOを使用します。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hirauchi.myapplication"> <uses-permission android:name="android.permission.RECORD_AUDIO" /> //その他に必要な許可があればここにずらずら記入していきます。 (省略) </manifest>
- READ_CALENDAR //カレンダー
- WRITE_CALENDAR
- CAMERA //カメラ
- READ_CONTACTS //連絡先
- WRITE_CONTACTS //連絡先
- GET_ACCOUNTS
- ACCESS_FINE_LOCATION
- ACCESS_COARSE_LOCATION
- RECORD_AUDIO //マイク・スピーカー
- READ_PHONE_STATE
- CALL_PHONE
- READ_CALL_LOG
- WRITE_CALL_LOG
- ADD_VOICEMAIL
- USE_SIP
- PROCESS_OUTGOING_CALLS
- BODY_SENSORS
- READ_EXTERNAL_STORAGE //写真
- WRITE_EXTERNAL_STORAGE //写真
パーミッションダイアログの表示の補足
パーミッションダイアログを表示する方法についてです。パーミッションダイアログを表示するには、ActivityCompat.requestPermissions()を使用します。
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 100)
requestPermissions()メソッドの中の
第1引数にはContext
第2引数には、パーミッションの種類を配列で指定。
第3引数には、任意のRequestCodeを指定します。
※このRequestCodeは、ユーザーの許可・拒否の選択結果を受け取る際に、どのパーミッションリクエストかを判定するために使用されます。
ちなみにこのダイアログの表示はなくても使えるようだったのであえて説明から省いています
requestPermissions()で、RequestCodeに100を指定していたので、if (requestCode == 100)という判定で、位置情報のリクエストの応答かを判定します。
まとめ
今回はKotlin】マイクやスピーカーの使用許可(パーミッション)ダイアログの表示方法についてお伝えしました。
※プログラミングは習得中ですので、参考程度に記事を読んでください。
参考にしたサイトはこちらです。
辛すぎるAndroidのApp開発を、Kotlinとコルーチンで楽にする
【Kotlin】位置情報のパーミッションダイアログを表示する方法を解説