Android 10:仅在前台访问设备位置的权限

时间:2019-09-08 13:33:23

标签: android android-permissions android-10.0

我的应用仅在前景中使用位置数据。由于Android 10区分了背景位置和前景位置,因此我希望将manifest.xml中的权限设置得尽可能简单,以免打扰用户。

发行说明(https://developer.android.com/about/versions/10/privacy/changes)声明如下: 如果我将目标SDK放到Android 10(29)上,并且只在清单中请求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
    }

在清单文件中:

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

但是,除了预期的“仅在使用应用程序时允许”之外,您还可以在“位置”权限中选择“一直允许”。

还会不时弹出通知“ App在后台获取您的位置”,这正是我要避免的事情。

enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

在清单中仅放入ACCESS_FINE_LOCATION。

您在应用程序位置设置中看到“一直允许”。根据@ greywolf82的建议,您的某些依赖项中可能包含ACCESS_BACKGROUND_LOCATION权限。

enter image description here enter image description here