在设备注册时,未通过 DevicePolicyManager 在 Android Q 中为设备所有者应用授予后台位置权限。
coarseP =
mPolicyManager.setPermissionGrantState(mAdminComponent,
mContext.getPackageName(),
Manifest.permission.ACCESS_COARSE_LOCATION,
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
fineP =
mPolicyManager.setPermissionGrantState(mAdminComponent,
mContext.getPackageName(),
Manifest.permission.ACCESS_FINE_LOCATION,
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
{
backgroundP =
mPolicyManager.setPermissionGrantState(mAdminComponent,
mContext.getPackageName(),
Manifest.permission.ACCESS_BACKGROUND_LOCATION,
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
}
所有 3 个 API 调用(coarseP、fineP、backgroundP)的结果都是 true,但只授予前台权限。
奇怪的是,当我在应用程序更新时在广播接收器中添加相同的代码时,在这种情况下会授予后台权限。