heihei blog

Blog icon by Unsplash https://unsplash.com/@virussinside

PermissionsDispatcher KTXで条件に応じて承認リクエストする権限を切り替える

表題のとおりです。PermissionsDispatcherのGitHub READMEに記載されている情報が主な内容です。

PermissionsDispatcherについての詳細は以下からどうぞ。

github.com

権限まわりに関する実装は、ライブラリなしの場合煩雑になりがちですが、PermissionsDispatcherライブラリを使うと、権限の承認が必要な処理を実行する際、指定した権限の許可がない場合に権限の承認のためのリクエストを表示したり、リクエストが却下された際に実行する関数などの指定を行うことができます。実行したい関数にアノテーションを付与することで、いつ、どの権限をリクエストするのかなどを指定できます。

詳細は上記のREADMEなどを参照してください。

PermissionsDispatcher KTX

上記に記載したように、PermissionsDispatcherはとても便利なライブラリです。

通常のPermissionsDispatcherでも権限周りに関するほとんどの実装に関しては事足りるのですが、先日業務でTarget SDK 31へのアップデート対応をした際に、PermissionsDispatcherのKTXバージョンのライブラリの場合、さらに柔軟に活用できたので、事例を紹介します。

KTXバージョンのREADMEなどはこちらです。PermissionsDispatcherリポジトリのなかにktxモジュールが存在します。

github.com

Android 12で追加された新しい権限

ここからは自分がやりたかった、「OSバージョンごとにリクエストする権限一覧を切り替える」こととについて記載します。

Android 12では、Bluetooth関連で新しい権限が登場しました。BLUETOOTH_SCANBLUETOOTH_ADVERTISEBLUETOOTH_CONNECT権限です。

developer.android.com

たとえば通話するような機能がアプリにあったとき、アプリ利用者は相手の音声を聞くためにBluetooth接続端末を用いることができます。その際、Android 12では権限の許可が必要になります。

Android OS 12が動く端末では、これらの(アプリに応じて必要な)権限の承認リクエストを別途行う必要があります。

OSバージョンをみて承認リクエストする権限を切り替える

KTXではないPermissionsDispatcherライブラリでは、ユーザーに承認してほしい権限の一覧をアノテーションの引数に渡すことができます。ですが、アノテーションの引数の型がJavaのString[]となっており、if文などを使ってOSごとに一覧を別途定義して渡すことが難しくなっています。

一方で、KTXを用いると、イメージですが、以下のようなコードで、OSバージョンをみて異なる権限の一覧を承認リクエストすることができます。

constructPermissionsRequest(
  permissions = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
    arrayOf(
        Manifest.permission.BLUETOOTH_SCAN,
        Manifest.permission.BLUETOOTH_CONNECT
        ...
    )
  } else {
    arrayOf(
        ...
    )
  },
  onPermissionDenied = { ... },
  onNeverAskAgain = { ... },
  requiresPermission = { ... }
)

その他のメリット

本題とは少し話がそれますが、permissionsdispatcher-ktx ではPermissionsDispatcherで利用しているようなアノテーションを用いません。そのためAnnotation Processingが走らないので、ビルド時間的に対しても優しい設計になっていそうです。

まとめ

  • PermissionsDispatcher KTXを使うと条件に応じて承認リクエストする権限を出し分けできる
  • PermissionsDispatcher KTXはAnnotation Processingが不要な分、ビルド時間的に対しても優しい設計になっていそう

以上ですー!

Target SDK 31対応の際に参照したリンク一覧の雑ログ

developer.android.com

exportedの話だったり、PendingIntent Immutable Flagの話だったりを対応しました。

developer.android.com

Splash ScreenはAndroid 12 OSのAndroid端末であれば必ず表示されます。 Android 12以上と未満で、スプラッシュの動きの統一するかしないかなどを決め、対応をする必要があります。独自のSplashScreenが既存で存在するかどうかによって対応方針などが変わり、それについての記載も公式ドキュメントにあります。

developer.android.com

Bluetooth接続を行う場合など、Bluetoothの権限を必要とする場合、対応が必要な場合があります。

Bluetoothを利用する機能が主となるアプリでなくても、たとえばBluetooth接続端末に対してアプリが接続を試みることがある場合などに、新しくRuntimePermissionの制御が必要になるケースもありますので、もしかしたら、、という方は一読することをオススメします。

ほかにも参考になるリンクがあるよ、という方はぜひコメントやご指摘等いただけたら嬉しいです。

2021年を振り返る

f:id:shoheikawano:20211231200000p:plain

2021年をブログ記事で振り返ります。

(過去記事: 2018, 2019, 2020)

1月

blog.shoheikawano.com

初詣で大吉だった模様です。2022年の運勢も気になる。明日いく予定です。 29歳になって、目標を立てて、引っ越してきて初めての雪をみたらしい(吹雪)

2月

blog.shoheikawano.com

妻の誕生日で料理を振る舞ったり、牡蠣小屋に行ったりしていたらしい。 この頃からKMMちょっとずつ触ったりしていた。

3月

blog.shoheikawano.com

この頃はパウンドケーキ作りとか、大濠公園で桜🌸を見に行ったりとか、だるちゃんが遊びにきていたので飲んだりした。あとは広島にいっていた。

4月

blog.shoheikawano.com

熊本に帰省した。 コロナが再び流行して、結婚パーティー中止に。 この頃に頂いた結婚祝いのお品は、いまも全部大切に使わせていただいています。 撮影だけしに東京に行き、Airbnbの宿で友人数名と飲んだりした月でした。

5月

blog.shoheikawano.com

TOHO OFFICE行ったり、映画をいくつかみたり、個人開発で技術試すのをひたすらやったりしていた月。

6月

blog.shoheikawano.com

セミの鳴き声がしだして、夏っぽくなってきた月。 あじさいを見に、太宰府天満宮に行ったり、MIDIキーボード買ってDTMやったりしていた月。

7月

blog.shoheikawano.com

山口県にふらりと旅行したり、ガラスペンとやらを買ってみたり(この前割ってしまった・・)、映画「龍とそばかすの姫」を観たりした。DroidKaigiはネタがほんとに思いつかなかったけど、来年は自信を持ってネタを出せるようにしたい。

8月

blog.shoheikawano.com

かき氷を食べたり水族館に行ったり、個人アプリのCompose化を終えたりした。このあとからComposeはほとんど触れていないので、2022年はCompose触っていきたい。(願望)

9月

blog.shoheikawano.com

妻のオンライン専門文房具の実店舗がオープンし、そこのカフェ部分を担当することになった。オープンの準備はほとんど妻がやっていた。ぼちぼちお客さんも来てくださり、知り合いの方にも時折足を運んでいただき、大変感謝です。ありがとうございます。今後福岡に遊びに来る方は、ぜひお時間あれば、足を運んでいただけたら嬉しいです(^o^)(基本土日営業です)

10月

blog.shoheikawano.com

Pixel 6買ったけど結局メイン機としてはまだ使っていない。。(サイズが大きいのと思ったより重く。)

能古島はすごくよかったので、来年もまた行きたい。

このブログに、「きっと、気づいたら年末なのだろうな、、」って書いてて、「そのとおりやで」と過去の自分に伝えたい。

11月

blog.shoheikawano.com

東京出張行って、オフィスの人たちとワイワイしたりした。物理出社・対面でのコミュニケーションも大事だなーと改めて感じました。東京で食べようと思えば食べれていたクリスピークリームドーナツが限定で販売されていて、整体の先生がわざわざ買ってお店まで届けてくださるような優しい行動をとってくださり大変ありがたかったです。この場を借りて感謝申し上げます。

12月

blog.shoheikawano.com

そして今月、クリスマスマーケット行ったり、また牡蠣小屋いったり、枕を自分たちの体に合う形で作ってもらったりしましたとさ。

昨日お店の仕事納めがあって、今日は家の掃除をしたりしていました。


以下は、今年始めたことややめたことです。

今年新しく始めたこと

  • お店
  • 桃鉄(最近
  • 朝散歩(最近

今年やめたこと

  • 日記(手で書くほう)
  • 技術的な登壇

まとめ

福岡に引っ越してきて1年が経ち、福岡での生活にも馴染めました。お店を始めたり、大きな新しいチャレンジがあった月でもありました。

2022年は、技術的な登壇なども再開していきます。普段業務ではマネージメントの役割と開発の半分半分を維持しようと意識していますが、最近はTipsブログをまれに書く程度になっていたので、改めて登壇するネタを持てるくらいの知識取り入れを行っていきたいという所存です。

また、12月には本当に小さいですが、バックエンドのAPI作成的なことも行ったりしました。これまでAndroidのアプリ開発のみ行ってきましたが、来年も、新しいチャレンジはしていきたいです。

それでは、皆様良いお年を〜!

2021年12月を振り返る

皆様年末いかがお過ごしでしょうか。 いよいよ2021年も終わりですね〜。 それでは、少し早いですが、12月を振り返ります。

牡蠣小屋に行った

f:id:shoheikawano:20211230152804j:plain

f:id:shoheikawano:20211230152807j:plain

去年の振り返りブログでも多分書きましたが、今回も、去年と同様の場所に行ってきました。

www.fukuoka-now.com

前回行ったから、と調子に乗って、お酒以外あまり持ち込みせずに行ったのですが、 色々と持ち込みすればよかったと反省しました。

牡蠣小屋は、チーズとか野菜など、お肉以外のものは基本持ち込みOKのお店が多いです。(実際に行く場合にはお店のウェブサイトなどを確認してください)ウィンナーとかを持っていったけど、もう少し色々持っていけばよかったという感じでした。

牡蠣の味は、、あたりまえに(゚∀゚)ウマウマでした。

クリスマスマーケットに行った

f:id:shoheikawano:20211230152820j:plain

f:id:shoheikawano:20211230152952j:plain

博多のクリスマスマーケットに行ってきました。去年は天神の方にいきました。歌手の方が来ていたりしてとても賑わっていました。チキン食べたりアヒージョ食べたりできました。

枕を作ってもらった

年末で新調しようかというのも込みで、枕が合っていないかもというふんわりとした課題を解決するために、自分にあった枕を作ってくれるお店に行って、枕を作ってもらいました。店内にあるベッドに横になり、仰向き、横向きそれぞれの姿勢とか頭の位置をチェックしてもらって、枕の高さを何度か調整してもらい作ってもらいました。二人で30分くらい?で完成して、そのまま持ち帰りできました。

いまのところ、寝入が早くなった・朝起きてすっきりしている〜というのが体感できるくらいには効果があったので、満足です。 お店はここでした

hontoku-futon.com

f:id:shoheikawano:20211230152833j:plain

その他

桃鉄にハマった

今更ですが。めっちゃ面白いですね!

そんなこんなで、のんびりした師走を過ごしました。

それでは、皆さん12月もお疲れさまでしたー!

2021年11月を振り返る

ハロウィン終わったと思ったら、 あっという間に師走ですねー。 ここからさらに時間経つが早くなりそう..

今日の福岡は秋に戻った感じの天気で、ちょい暖かい感じでした。

それでは、11月を振り返ります。

東京行った

福岡にきてから、元同僚の結婚式にお呼ばれして行ったのを除いて、一度も東京に行っていなかったので行った。チームの方とランチ行ったり飲んだり、友人と飲んだり楽しかった。3日くらいいたけど足りないなって感じだった。長い目で見ると、きっと「足りない」って感じるくらいが丁度いいのだろうなと思ふ。今のところは、1Qに一回くらい行ったりするくらいがいいのかなーとぼんやり思ったりしています。

福岡に会社の後輩さんたちが遊びに来てくれた

お店にわざわざ来てくださった。ご飯食べたり飲み行ったりもできて楽しかった。ご飯食べた次の日から雨が降ったりして、観光目的で来てた後輩さんとお嫁さんには申し訳ない天気だったっぽい。。悲しい

f:id:shoheikawano:20211212130202j:plain

その他

クリスピー・クリーム・ドーナツ食べた

福岡にはないドーナツが期間限定で販売されるとのことで、 クリスピー・クリーム・ドーナツについて妻と話をしていたという整体の先生が、わざわざお店まで買って持ってきてくれた(イケメンすぎる..)

久しぶりの味だった。最高。味ももちろんおいしいけど、食べようと思っても食べられないものを食べる幸せ的な感じです。

f:id:shoheikawano:20211212130503j:plain

冬っぽくなった

書くことがなくなったので冬っぽい写真を載っけます。 皆さん体調に気をつけて、師走をやっていきましょう。

以上です、11月もお疲れさまでした

f:id:shoheikawano:20211212130230j:plain

2021年10月を振り返る

金木犀の香りもすっかりいなくなり、 一気に秋の終わりと冬の始まりが近づいてきた感じがあります。。 乾燥する季節にもなってきたので、適度に加湿などしながら乾燥に気をつけて生活していきます。

それでは、10月を振り返ります。

カフェを正式オープンした

先月の振り返り記事でカフェオープンしたって書いていたけど、そういえば9月末はプレオープンしていて、10月が正式オープンでした。

コーヒー以外にもオレンジジュースもあります。少しずつ店内の見た目を変えたり、電源とかWi-Fiとかを整備している段階です。(電源は自由に使えて、Wi-Fiは今月末に整う予定。)

f:id:shoheikawano:20211106182112j:plain

能古島に行った

午後休で行ってきました。 天神からバスでフェリー乗り場まで行ってフェリーで数十分くらいです。

f:id:shoheikawano:20211106182334j:plain

コスモスやサルビアを横目に、「のこのこボール」という名のゲートボール+ゴルフみたいなものをしたり駄菓子屋行ったりしました。数ヶ月に一回くらい定期的にいきたい。。猫もいて最高に可愛かった。。(写真はない)

f:id:shoheikawano:20211106182338j:plain

f:id:shoheikawano:20211106182342j:plain

f:id:shoheikawano:20211106182348j:plain

Pixel 6買った

元々Pixel 5使っていて乗り換えという感じ。だけど、想像していたよりも重たい+大きくてまだ移行まではできていない。。上の花の写真はPixel 6で撮った。

そのほか

映画マスカレード・ナイトを観に行きました。東野圭吾原作のやつです。

www.youtube.com

10月、DroidKaigiとかもそうだしいろんなイベントごとに加えて新しいMacbook ProとかPixelとかの製品発表会もあってモリモリだった感じはある。

きっと、気づいたら年末なのだろうな、、

以上です。

2021年9月を振り返る

今年あと70日って言われると急にやべえって気持ちになるのは自分だけですかね.. 最近急に寒くなりましたね、、 寒暖差気をつけて元気にやっていきましょう。 それでは、9月を振り返ります。

道具店+カフェをOPENした

正確には、妻の文房具屋+カフェのお店のカフェ店員をやっているというほうが近いです。

f:id:shoheikawano:20211023150127j:plain

9月の連休使ってぐわーーーっと内装したりなどをしていました。妻の実行力に感動しました。(自分は後ろをついていった感じでした)

基本土日営業という感じでやっています。福岡来る方いたらぜひお越し下さい🙏

9月、業務以外だとほんとリアル店舗準備!!の月でした。

その他

あとはmeetyをはじめて利用して、他社の方と雑談させていただいてりしていました。自分の会社以外の人と話すのは、自分のバイアスとかに気づけたり、刺激をいただけたりすることが多く、これからも定期的に行えたらと思っています。

Meety: ☕雑に最近の生活とか仕事まわりとか☕

以上!