Categories: Android

[Android] kotlinとPermissionDispatcherを使うときの注意点

PermissionDispatcherをkotlinで使おうとしていたのですが、なぜかコードが自動生成されなかったので、その対策メモ

調べたところ、2017-09-14時点で、kotlin対応はまだ正式リリースされていないようで、ベータ版ではあるが、3.0.0を使うようにしないと行けない模様。

cf:

上記資料より、build.gradle(app)に下記のように記載が必要の模様

repositories {
    jcenter()
    maven { url "http://oss.jfrog.org/artifactory/oss-snapshot-local/" }
}
dependencies {
     compile("com.github.hotchemi:permissionsdispatcher:3.0.0-SNAPSHOT")
     kapt "com.github.hotchemi:permissionsdispatcher-processor:3.0.0-SNAPSHOT" }
}

さらに、コードにはjavaと違い以下を記載する

@RuntimePermissions(kotlin = true) // kotlin=trueをいれる
class MainActivity: AppCompatActivity() {

    ...

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        onRequestPermissionsResult(requestCode, grantResults) // kotlinの拡張関数で定義されているため、javaのように頭にMainActivity.onRequestPermissionsResultとする必要はない
    }

    @NeedsPermission(Manifest.permission.CAMERA)
    inline fun showCamera() { // inlineもしくはinternalで定義する必要あり。internalのほうがthisが参照できるので使いやすい
        // カメラ起動てきな処理
    }

    // 例えばボタンをおされたらカメラ起動などの起動の仕方
    fun onClickButton() {
         showCameraWithCheck() // @NeedsPermissionに定義したメソッド名+WithCheck()で呼び出し。
    }
}

他の実装部分

細かい実装は以下が参考になった

はじめに入門向けにとにかく短くまとめました言わずと知れたPermissionsDispatcherの紹介記事ですざっくり理解できたらより詳しい記事やドキュメントを読みましょうMパーミッションに対応するサンプルコー...
5分で対応するMパーミッション - Qiita - Qiita
GitHub is where people build software. More than 73 million people use GitHub to discover, fork, and contribute to over 200 million projects.
- GitHub

追記

近々正式リリースされるので、kotlinにてPermissionsDispatcherをprodで使うのは少し待ちましょう

追記その2

正式版リリースされたようなので、以下の記載でイケルと思います。

dependencies {
  compile("com.github.hotchemi:permissionsdispatcher:3.0.1")
  annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:3.0.1"
}
mogmet

View Comments

Share
Published by
mogmet