如何知道位置权限是否被授予“始终允许”

Ton*_*Ton 9 permissions android

在 Android 10 中,当请求诸如位置之类的权限时,系统会提示用户 3 个选项:

允许 APP 访问此设备的位置吗?

- 一直允许

- 仅在使用应用程序时允许

-否定

有没有办法知道究竟是如何被授予的?我使用此代码来了解是否授予位置:

boolean hasPermission = (ContextCompat.checkSelfPermission(oContext, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED);
Run Code Online (Sandbox Code Playgroud)

但我需要知道它是“一直”被授予还是“在使用应用程序时”被授予。我真正需要的是始终获得许可,因为我的应用程序具有后台位置服务。所以我需要知道是否已获得许可,或者是否有可能请求许可但没有“仅在使用应用程序时”允许它的选项。

requestPermissions(Context, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 123);
Run Code Online (Sandbox Code Playgroud)

gkp*_*ln3 5

您可以使用:

boolean backgroundLocationPermissionApproved =
       ActivityCompat.checkSelfPermission(this,
           permission.ACCESS_BACKGROUND_LOCATION)
Run Code Online (Sandbox Code Playgroud)

不可能在不让用户选择“仅在使用应用程序时”选项的情况下提示用户。