[Android]複数の Runtime Permission 設定を GPSで実行する

cat58 01 - [Android]複数の Runtime Permission 設定を GPSで実行するRuntime Permissionを設定する必要があるものは、時として複数同時に必要であったりします。ここではGPSのログをExternal Storageに保存するケースで考えてみます。

Android Studio 3.4.2
API 29
AndroidX



Multi Runtime Permissions

 
GPSは ACCESS_FINE_LOCATION のパーミッションが必要です。
また外部のストレージに書き込むときには WRITE_EXTERNAL_STORAGE も必要となります。
 
この2つはAndroidManifestに登録するだけではなくユーザーの許可を必要とするRuntime Prmissionです。更にユーザーの許可を必要とする場面で複数のパーミッションを許可を得られるようにします。
 

 

GPS と 外部ストレージ書き込み許可

 
例えば、最初に位置情報へのアクセス許可を尋ねます。
 
multi 02b - [Android]複数の Runtime Permission 設定を GPSで実行する
 
その後、続けて同じ許可を求めるステージで
メディアファイルへのアクセス許可を確認するダイアログが表示。
 
multi 04 - [Android]複数の Runtime Permission 設定を GPSで実行する
 
このような形でパーミッションの許可を取得するようにコードを記述していきます。
ここでどちらかを「許可しない」とすると、これ以降この場面では許可しなかったパーミッションだけを確認するようにします。

例として位置情報は許可して、メディアアクセスを許可しない選択をした後では、次回から表示しないという選択肢が増えます。

multi 03 - [Android]複数の Runtime Permission 設定を GPSで実行する

 

requestPermissions

 
複数のパーミッションを扱うには、配列あるいはArrayとして例えばPERMISSIONS[]を作り requestPermissions() をコールします。
 

 

 

onRequestPermissionsResult

 
onRequestPermissionsResult から結果を受け取りますが、permissions[]のインデックスに応じてgrantResults[]が、拒否ならば「-1」、許可すれば「0」が返ってきます。それぞれの結果を確認して、全て許可されない場合はユーザーに拒否された機能が使えないと明示して終わります。
 

 

サンプルコード

 
GPS パーミッションを考慮して実装する で説明した内容を元に、パーミッションを複数の Runtime Permission に対応させています。

パーミッションを得た後でGPSと外部ストレージの保存をする手前までです。

AndroidManifest.xml

 
 
MainActivity.java

 
位置測定とそれを外部ストレージに保存するコードは以下を参考にしてください

gps background 00 100x100 - [Android]複数の Runtime Permission 設定を GPSで実行する
GPSのログを取り続けるためにはどうするといいのでしょうか。システムはすぐにスリープ、Dozeに入れてバッテリー消費を抑制しようとします。た...

 

 
関連ページ:

 

References:
LocationManager | Android Developers
Criteria | Android Developers
Runtime Permissions | Android Developers
Location Strategies | Android Developers
Location | Android Developers

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加




アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

オンラインスクールは色々ありますが、以下の3つはAndroidが学習できる老舗スクールです。


TECH ACADEMY
Androidアプリコース


こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


Google Pixel 4 / 4 XL
Android 10 搭載


シェアする

  • このエントリーをはてなブックマークに追加

フォローする