Android SDK 29 中未出现“始终允许”位置提示

Shy*_*dda 17 android android-location android-permissions

我无法在 SDK 29 中获得位置的“始终允许”提示。我已经在清单中设置了这些权限:

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)

并请求用户在运行时允许这些权限。但它只返回“当应用程序打开时”和“拒绝”选项。

关于如何在 SDK 29 中显示它的任何想法。

小智 13

在清单和权限数组中添加“ACCESS_BACKGROUND_LOCATION” 。如果您只在清单中添加权限,则不会显示“始终允许”选项。您需要添加数组以要求用户在运行时授予。

在清单中:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
Run Code Online (Sandbox Code Playgroud)

在您的活动中:

if (ContextCompat.checkSelfPermission( this.applicationContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this@MainActivity, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_BACKGROUND_LOCATION), MY_PERMISSIONS_REQUEST_LOCATION)
} else {
  // permission granted            
}
Run Code Online (Sandbox Code Playgroud)


sat*_*ser 12

为了在运行 Android 10(API 级别 29)或更高版本的设备上访问后台位置,您还需要在清单文件中使用以下权限

 <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
Run Code Online (Sandbox Code Playgroud)

请参考以下链接了解更多信息

https://developer.android.com/training/location/permissions?hl=fr

  • 我已在清单中添加了该权限请求,但仍然没有获得“始终允许”选项,只是“仅在使用应用程序时允许”选项。我有另一个具有相同权限集的应用程序,而这个应用程序同时拥有这两个权限!我还需要向用户请求后台位置吗? (3认同)
  • 在清单中添加了该行,并且我正在请求许可。没有什么! (3认同)

Ant*_*nio 6

ACCESS_BACKGROUND_LOCATION在清单中添加权限。需要在 android 10 及更高版本上显示始终允许选项。

参见https://developer.android.com/training/location/background#evaluate 中的第二点

  • 我添加了“ACCESS_BACKGROUND_LOCATION”仍然允许始终不显示。 (2认同)