harmony 鸿蒙程序访问子系统变更说明
程序访问子系统变更说明
cl.access_token.1 requestPermissionsFromUser申请位置权限时行为变更
访问级别
公开接口
变更原因
根据安全隐私要求,地理位置支持使用期间允许的管控能力。位置权限申请使用时,禁止通过弹窗形式授予后台位置权限;
应用如需使用后台位置权限,需要在设置界面由用户手动授予,具体授权方式请参考下文【适配指导】
变更影响
涉及权限:
前台位置权限(用于管控应用前台获取位置信息行为):
精确位置权限:ohos.permission.LOCATION:允许应用获取设备精确位置信息;需要先申请模糊位置权限才可申请此权限。
模糊位置权限:ohos.permission.APPROXIMATELY_LOCATION:允许应用获取设备模糊位置信息。
后台位置权限(用于管控应用后台获取位置信息行为):
ohos.permission.LOCATION_IN_BACKGROUND:允许应用在后台运行时获取设备位置信息;需要先申请前台位置权限后,才可申请此权限。
具体受影响的弹窗场景见下文:
a) 应用仅申请后台位置权限(前台位置权限未弹窗申请)
变更前:弹出弹窗,点击允许可授予后台位置权限
变更后:不弹窗,不授予后台位置权限
b) 应用仅申请后台位置权限(前台位置权限已授予)
变更前:不弹窗,后台位置权限在第一次授予前台位置权限时同时授予
变更后:不弹窗,不授予后台位置权限
c) 应用同时申请前台位置和后台位置权限
变更前:弹窗展示允许和拒绝选项,选择允许则授予前台位置+后台位置权限
变更后:
API 10及以前:弹窗展示使用期间允许和拒绝选项,选择使用期间允许,仅授予前台位置权限;
API 11及以后:不弹窗,不授予前台位置和后台位置权限
API level
9
变更发生版本
从OpenHarmony SDK 4.1.5.3开始。
变更的接口/组件
@ohos.abilityAccessCtrl.d.ts中requestPermissionsFromUser接口
可能影响接口
文件 | 方法 |
---|---|
@ohos.geolocation.d.ts | geolocation.on(‘locationChange’) |
@ohos.geolocation.d.ts | geolocation.off(‘locationChange’) |
@ohos.geolocation.d.ts | geolocation.on(‘locationServiceState’) |
@ohos.geolocation.d.ts | geolocation.off(‘locationServiceState’) |
@ohos.geolocation.d.ts | geolocation.on(‘cachedGnssLocationsReporting’) |
@ohos.geolocation.d.ts | geolocation.off(‘cachedGnssLocationsReporting’) |
@ohos.geolocation.d.ts | geolocation.on(‘gnssStatusChange’) |
@ohos.geolocation.d.ts | geolocation.off(‘gnssStatusChange’) |
@ohos.geolocation.d.ts | geolocation.on(‘nmeaMessageChange’) |
@ohos.geolocation.d.ts | geolocation.off(‘nmeaMessageChange’) |
@ohos.geolocation.d.ts | geolocation.on(‘fenceStatusChange’) |
@ohos.geolocation.d.ts | geolocation.off(‘fenceStatusChange’) |
@ohos.geolocation.d.ts | geolocation.getCurrentLocation |
@ohos.geolocation.d.ts | geolocation.getLastLocation |
@ohos.geolocation.d.ts | geolocation.isLocationEnabled |
@ohos.geolocation.d.ts | geolocation.requestEnableLocation |
@ohos.geolocation.d.ts | geolocation.isGeoServiceAvailable |
@ohos.geolocation.d.ts | geolocation.getAddressesFromLocation |
@ohos.geolocation.d.ts | geolocation.getAddressesFromLocationName |
@ohos.geolocation.d.ts | geolocation.getCachedGnssLocationsSize |
@ohos.geolocation.d.ts | geolocation.flushCachedGnssLocations |
@ohos.geolocation.d.ts | geolocation.sendCommand |
@ohos.geolocation.d.ts | SatelliteStatusInfo |
@ohos.geolocation.d.ts | CachedGnssLocationsRequest |
@ohos.geolocation.d.ts | GeofenceRequest |
@ohos.geolocation.d.ts | Geofence |
@ohos.geolocation.d.ts | ReverseGeoCodeRequest |
@ohos.geolocation.d.ts | GeoCodeRequest |
@ohos.geolocation.d.ts | GeoAddress |
@ohos.geolocation.d.ts | LocationRequest |
@ohos.geolocation.d.ts | CurrentLocationRequest |
@ohos.geolocation.d.ts | Location |
@ohos.geoLocationManager.d.ts | geoLocationManager.on(‘nmeaMessage’) |
@ohos.geoLocationManager.d.ts | geoLocationManager.off(‘nmeaMessage’) |
@ohos.geoLocationManager.d.ts | geoLocationManager.on(‘locatingRequiredDataChange’) |
@ohos.geoLocationManager.d.ts | geoLocationManager.off(‘locatingRequiredDataChange’) |
@ohos.geoLocationManager.d.ts | geoLocationManager.getLocatingRequiredData |
@ohos.bluetooth.d.ts | bluetooth.startBluetoothDiscovery |
@ohos.bluetooth.d.ts | startBLEScan |
@ohos.bluetoothManager.d.ts | bluetoothManager.startBluetoothDiscovery |
@ohos.bluetoothManager.d.ts | startBLEScan |
@ohos.telephony.observer.d.ts | observer.on(‘cellInfoChange’) |
@ohos.telephony.radio.d.ts | radio.sendUpdateCellLocationRequest |
@ohos.telephony.radio.d.ts | radio.getCellInformation |
@system.geolocation.d.ts | GetLocationOption |
@system.geolocation.d.ts | SubscribeLocationOption |
@system.geolocation.d.ts | geolocation.getLocation |
@system.geolocation.d.ts | geolocation.subscribe |
@system.geolocation.d.ts | geolocation.unsubscribe |
@ohos.wifi.d.ts | wifi.scan |
@ohos.wifi.d.ts | wifi.getScanInfos |
@ohos.wifi.d.ts | wifi.getDeviceConfigs |
@ohos.wifi.d.ts | wifi.getStations |
@ohos.wifi.d.ts | wifi.getCurrentGroup |
@ohos.wifi.d.ts | wifi.getP2pPeerDevices |
@ohos.wifi.d.ts | wifi.p2pConnect |
@ohos.wifi.d.ts | wifi.startDiscoverDevices |
@ohos.wifi.d.ts | wifi.on(‘p2pDeviceChange’) |
@ohos.wifi.d.ts | wifi.off(‘p2pDeviceChange’) |
@ohos.wifi.d.ts | wifi.on(‘p2pPeerDeviceChange’) |
@ohos.wifi.d.ts | wifi.off(‘p2pPeerDeviceChange’) |
@ohos.wifiManager.d.ts | wifiManager.scan |
@ohos.wifiManager.d.ts | wifiManager.getScanResults |
@ohos.wifiManager.d.ts | wifiManager.getScanResultsSync |
@ohos.wifiManager.d.ts | wifiManager.getCandidateConfigs |
@ohos.wifiManager.d.ts | wifiManager.getDeviceConfigs |
@ohos.wifiManager.d.ts | wifiManager.getStations |
@ohos.wifiManager.d.ts | wifiManager.getCurrentGroup |
@ohos.wifiManager.d.ts | wifiManager.getP2pPeerDevices |
@ohos.wifiManager.d.ts | wifiManager.p2pConnect |
@ohos.wifiManager.d.ts | wifiManager.startDiscoverDevices |
@ohos.wifiManager.d.ts | wifiManager.getP2pGroups |
@ohos.wifiManager.d.ts | wifiManager.on(‘p2pDeviceChange’) |
@ohos.wifiManager.d.ts | wifiManager.off(‘p2pDeviceChange’) |
@ohos.wifiManager.d.ts | wifiManager.on(‘p2pPeerDeviceChange’) |
@ohos.wifiManager.d.ts | wifiManager.off(‘p2pPeerDeviceChange’) |
适配指导
1、应用在requestPermissionsFromUser接口中同时申请前台、后台位置权限
a) 排查应用是否需要后台位置权限,如需要,将接口申请权限行为更改为单独申请前台位置权限
由:atManager.requestPermissionsFromUser(context, ['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION', 'ohos.permission.LOCATION_IN_BACKGROUND'], ......)
更改为:atManager.requestPermissionsFromUser(context, ['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION'], ......)
或由:atManager.requestPermissionsFromUser(context, ['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION_IN_BACKGROUND'], ......)
更改为:atManager.requestPermissionsFromUser(context, ['ohos.permission.APPROXIMATELY_LOCATION'], ......)
b) 当用户点击弹窗授予前台位置权限后,应用通过弹窗、提示窗等形式告知用户前往设置界面
c) 用户在设置界面选择【始终允许】选项,手动授予后台位置权限
2、应用仅在requestPermissionsFromUser接口中申请后台位置权限
a) 排查应用是否需要后台位置权限,如需要,需要先弹窗申请前台位置权限(后台位置权限仅在前台位置权限生效情况下才能够使用)
由:atManager.requestPermissionsFromUser(context, ['ohos.permission.LOCATION_IN_BACKGROUND'], ......)
更改为:atManager.requestPermissionsFromUser(context, ['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION'], ......)
或由:atManager.requestPermissionsFromUser(context, ['ohos.permission.LOCATION_IN_BACKGROUND'], ......)
更改为:atManager.requestPermissionsFromUser(context, ['ohos.permission.APPROXIMATELY_LOCATION'], ......)
b) 参考情况1
接口使用的示例代码可参考requestPermissionsFromUser接口指导
你可能感兴趣的鸿蒙文章
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦