[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 3 XLグローバル版
SIMフリー 並行輸入品
6.3インチの大画面
背景をぼかすポートレートモード撮影


Anker PowerCore II Slim 10000
Power IQ 2.0搭載
iPhone & Android対応

シェアする

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

フォローする