尽管没有 ACCESS_BACKGROUND_LOCATION 权限,但我的应用程序被认为正在使用后台位置,原因可能是什么?

Nic*_*oul 8 android geolocation android-manifest google-play android-permissions

我的应用程序(GitHub上的代码)被Google Play拒绝,原因是:

请删除所请求的后台位置权限并向您的应用提交更新。

但是,我的应用程序没有声明权限ACCESS_BACKGROUND_LOCATION

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="com.google.android.apps.photos.permission.GOOGLE_PHOTOS" />
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
Run Code Online (Sandbox Code Playgroud)

我首先怀疑 Mapbox,因为我的应用程序包含这些库:

implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.1.0'
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-localization-v8:0.11.0'
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-scalebar-v9:0.4.0'
implementation 'com.mapbox.mapboxsdk:mapbox-android-telemetry:6.1.0'
Run Code Online (Sandbox Code Playgroud)

但是,我的应用程序仅在应用程序运行时在屏幕上完全可见时才检查位置。
此外, Android Studio 显示的合并清单不包括ACCESS_BACKGROUND_LOCATION

合并清单 Android Studio

似乎设置android:minSdkVersion="29"可以绕过这个问题,但我不能这样做,因为我有数千个重要用户。

我还尝试添加一个弹出窗口,否认该应用程序在后台使用位置(即使它没有),但这也被拒绝,原因如下:

无需访问后台位置即可提供类似的体验。

问题:什么可能让别人认为我在后台使用位置信息?

Geo*_*tos 5

来自 Android 10 官方隐私变更

\n

针对 Android 9 或更低版本时自动授予访问权限

\n

如果您的应用在 Android 10 或更高版本上运行,但面向 Android 9(API 级别 28)或更低版本,则平台将应用以下行为:

\n
    \n
  • 如果您的应用程序声明了或的<uses-permission>元素,系统会在安装过程中自动添加 的元素。ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATIONACCESS_BACKGROUND_LOCATION

    \n
  • \n
  • 如果您的应用程序请求ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION,系统会自动将 ACCESS_BACKGROUND_LOCATION 添加到请求中。

    \n
  • \n
\n

设备升级到Android 10时访问

\n

如果用户授予您的应用访问设备位置 \xe2\x80\x93 或ACCESS_COARSE_LOCATION\ ACCESS_FINE_LOCATIONxe2\x80\x93 的权限,然后将其设备从 Android 9 升级到 Android 10,系统会自动更新授予您的应用的基于位置的权限集。您的应用程序在升级后收到的权限集取决于其目标 SDK 版本及其定义的权限,如下表所示:此处

\n

换句话说,这完全取决于您的 Target 平台版本。

\n