android - 仅在前台访问设备位置的权限

标签 android android-permissions

我的应用仅在前台使用位置数据。因为Android 10 区分了位置在后台和在前台,所以我想在manifest.xml 中设置尽可能简单的权限,以免打扰用户。

发行说明 ( https://developer.android.com/about/versions/10/privacy/changes ) 说明如下: 如果我将目标 SDK 放入 Android 10 (29) 并且只在 list 中请求 ACCESS_FINE_LOCATION(故意排除新的 ACCESS_BACKGROUND_LOCATION 权限),我应该只获得前台访问权限(这就是我想要的)。

在成绩文件中:

compileSdkVersion 29
    defaultConfig {
        applicationId "com.genewarrior.sunlocator"
        minSdkVersion 24
        targetSdkVersion 29
        versionCode 70
        versionName "3.10"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
        renderscriptTargetApi 19
        renderscriptSupportModeEnabled true
    }

在 list 文件中:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />

但是,与预期的“仅在使用应用程序时允许”不同,仍然可以在位置权限中选择“始终允许”。

还时常弹出通知“应用在后台获取您的位置”,这正是我想要避免的。

enter image description here

最佳答案

我认为你做的是正确的。您可以为您的应用请求仅位置权限以“仅在使用该应用时允许”。在请求代码中,您只需要请求 ACCESS_FINE_LOCATION 权限,在这种情况下:

ActivityCompat.requestPermissions(thisActivity, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 1234)

并且只在 list 中放入 ACCESS_FINE_LOCATION。

您在应用位置设置中看到“始终允许”。正如@greywolf82 所建议的那样,您的某些依赖项中可能包含 ACCESS_BACKGROUND_LOCATION 权限。

enter image description here enter image description here

关于android - 仅在前台访问设备位置的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57842422/

相关文章:

android - Firebase 测试实验室中的仪器测试不要求用户权限

android - WhatsApp 可以在未经许可的情况下访问 SMS

Android - 如何识别设备是否是 ARM 64

java - 当人脸位于所需帧中时,如何实时启动 ML Kit 人脸检测

android - 如何在 Android 中编辑时在编辑文本中显示清除按钮

Android - 根用户 - 挂载 : Read-only file system

未授予 Android 权限

java - 从 apk 文件中读取 Strings.xml 文件

android - 如何使用 PreferenceFragmentCompat 在首选项之间显示分隔符

android - 从 View 中请求相机权限