I.はじめに
Androidシステムのバージョン変更に伴い、測位許可も何度も変更されました。変更の数が増えるにつれ、バージョンやモデルごとに異なるものが増え、配置権限を扱う際に注意する必要がある点が増えています。この記事では、主に、さまざまな Android バージョンおよびさまざまなメーカーのモデルに対する測位権限の適応について記録します。
2. 現在の測位権限
<!-- Allows an app to access approximate location. 近似定位权限,api1,如:网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Allows an app to access precise location 精准定位权限,api1,如:GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Allows an app to access location in the background. 后台定位权限,api29,android10新增 -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
- ネットワーク ロケーション権限が属する: ACCESS_COARSE_LOCATION
- GPS 測位権限が属する: ACCESS_FINE_LOCATION
- バックグラウンドでの位置情報の許可: ACCESS_BACKGROUND_LOCATION
フォアグラウンド測位:ネットワーク測位と GPS 測位はフォアグラウンド測位に属し、アプリケーションはフォアグラウンドでのみ使用できます。
バックグラウンド位置:バックグラウンド位置許可。アプリケーションはバックグラウンドにあるときに位置位置を使用することもできます。
※ GPS測位は通常測位機能を利用して申請するだけで十分ですが、アプリがバックグラウンドでも測位機能を必要とする場合のみバックグラウンド測位を申請する必要があります。Android 10からはバックグラウンドでの位置情報の許可が追加され、この許可を申請しないとバックグラウンドでのアプリ起動時に位置情報機能が利用できなくなります。
3. 背景配置の注意点
3.1 Android10 携帯電話の targetSDK は Android10 よりも小さいため、同時にターゲット SDK も必要です
バックグラウンド位置情報権限 (ACCESS_BACKGROUND_LOCATION) は非常に機密性が高く、新しく追加された他の権限とは異なります。Android10 よりも小さい Android10 携帯電話の targetSDK も同時に実行する必要があります。Android10 以降の携帯電話の場合、targetSdkVersion が Android10 未満であっても、ユーザーがバックグラウンドでの位置情報の許可を積極的に承認しない場合、APP はバックグラウンドで位置情報を取得できません。
3.2 Android 10 システムでは、同じ権限ポップアップ ウィンドウで ACCESS_FINE_LOCATION 権限と ACCESS_BACKGROUND_LOCATION 権限の両方を申請できます。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestPermissions(arrayOf(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_BACKGROUND_LOCATION), 100)
}
}
3.3 Android 11 システムでは、バックグラウンド測位許可が再度調整されました。
targetSdkVersion=android11の場合、通常位置情報許可とバックグラウンド位置情報許可を同時に申請することはできません。
バックグラウンド位置情報の許可は、通常の位置情報の許可の申請に成功した後にのみ申請できます。
- バックグラウンド位置情報の許可を直接申請すると、ポップアップ ウィンドウが表示されずに直接許可が失敗します。
- 同時に申請すると、一般的な位置情報の許可とバックグラウンドの位置情報の許可がポップアップ表示されず、直接認証に失敗します。
第四に、各メーカーの違い
Androidのバージョンごとの許可申請の違いについては上記で説明しましたが、ここでは携帯電話メーカーごとの許可申請の違いを中心に説明します Androidのバージョンは比較的新しいもので、いずれもAndroid 12です。
4.1 ファーウェイ紅蒙OS
Huawei 携帯電話の場合、バックグラウンドの許可を考慮せずに、ネットワーク測位または GPS 測位を直接申請できます。Huaweiの位置情報許可は[使用期間のみ]と[常に許可]のみなので、直接申請することも可能です。「常に許可」を与えると、バックグラウンドでの位置情報のアクセス許可があることを意味します。
- ACCESS_COARSE_LOCATION を単独で適用するか、ACCESS_FINE_LOCATION を同時に適用すると、ポップアップ ウィンドウが表示されることがあります。
- 背景配置のみを申請すると、ポップアップウィンドウが表示されず、そのまま認証に失敗します。
- ポップアップ ウィンドウをクリックして無効にすると、後続のアプリケーションはポップアップしなくなり、直接認証が失敗し、システムにアクセスして設定する必要があります。
4.2 Xiaomi携帯電話
Xiaomi 携帯電話は、まずフォアグラウンド測位を申請する必要があり、フォアグラウンド測位権限を持っている場合にのみ、バックグラウンド測位を申請できます。どちらのアプリケーションにもポップアップ ウィンドウが表示されます。
4.3 オッポ
最初にフロントエンド ポジショニングを申請する必要があり、承認後にのみバックグラウンド ポジショニングを申請できます。また、背景配置を適用するためのポップアップ ウィンドウも、背景配置を有効にするためのシステム設定に案内されます。
4.4 生体内
OPPO と同様に、最初にフロントエンド ポジショニングを申請し、承認後にバックグラウンド ポジショニングを申請する必要があります。また、背景配置を適用するためのポップアップ ウィンドウも、背景配置を有効にするためのシステム設定に案内されます。
参考
Android R 11 のバックグラウンドでの位置情報の許可では、常に解決策が許可されるわけではありません。
この記事を読むには、Android の位置情報の許可の適応だけで十分です。