如何使用 devicepolicymanager 为我的设备所有者应用程序在 android 10 中获取 android.permission.ACCESS_BACKGROUND_LOCATION?
Posted
技术标签:
【中文标题】如何使用 devicepolicymanager 为我的设备所有者应用程序在 android 10 中获取 android.permission.ACCESS_BACKGROUND_LOCATION?【英文标题】:How to get android.permission.ACCESS_BACKGROUND_LOCATION in android 10 for my device owner application using devicepolicymanager? 【发布时间】:2020-12-14 20:32:01 【问题描述】:String packageName = context.getPackageName();
ComponentName adminComponentName = getComponentName(context);
boolean success = mDevicePolicyManager.setPermissionGrantState(
adminComponentName, packageName,
Manifest.permission.ACCESS_BACKGROUND_LOCATION,
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED
);
这是我用来授予 ACCESS_BACKGROUND_LOCATION 的代码,但我没有得到它。
【问题讨论】:
【参考方案1】:只需确保您已请求并授予所有与位置相关的权限:
<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"/>
mDevicePolicyManager.setPermissionGrantState(
adminComponentName, packageName,
Manifest.permission.ACCESS_COARSE_LOCATION,
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED
);
mDevicePolicyManager.setPermissionGrantState(
adminComponentName, packageName,
Manifest.permission.ACCESS_FINE_LOCATION,
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED
);
mDevicePolicyManager.setPermissionGrantState(
adminComponentName, packageName,
Manifest.permission.ACCESS_BACKGROUND_LOCATION,
DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED
);
可能您不需要同时设置COARSE
和FINE
权限,但我希望它的风险较小,以防在其中一个 android 版本中以不同方式处理。
设置中的权限用户界面:
只有ACCESS_FINE_LOCATION
权限被转换为只有在用户打开应用程序 ui 时才授予对位置 api 的访问权限。
同时拥有ACCESS_FINE_LOCATION
和ACCESS_BACKGROUND_LOCATION
将其设置为授予
【讨论】:
以上是关于如何使用 devicepolicymanager 为我的设备所有者应用程序在 android 10 中获取 android.permission.ACCESS_BACKGROUND_LOCATION?的主要内容,如果未能解决你的问题,请参考以下文章
可以从非管理员应用程序调用 DevicePolicyManager.lockNow() 吗?
Android权限篇 设备策略管理器(DevicePolicyManager)
DevicePolicyManager.isDeviceOwnerApp 方法无法正常工作