1# 程序访问子系统变更说明 2## cl.access_token.1 requestPermissionsFromUser申请位置权限时行为变更 3 4**访问级别** 5 6公开接口 7 8**变更原因** 9 10该变更为非兼容性变更。根据安全隐私要求,位置权限申请使用时,申请精确/后台位置权限,要同时申请模糊权限。 11 12**变更影响** 13 14变更前,通过调用[requestPermissionsFromUser](../../../application-dev/reference/apis/js-apis-abilityAccessCtrl.md#requestpermissionsfromuser9)接口申请位置权限,如下两种申请情况都可以顺利拉起弹窗: 15 161、在未申请模糊权限[ohos.permission.APPROXIMATELY_LOCATION](../../../application-dev/security/permission-list.md#ohospermissionapproximately_location)的情况下,请求后台位置权限[ohos.permission.LOCATION_IN_BACKGROUND](../../../application-dev/security/permission-list.md#ohospermissionlocation_in_background) 17 182、在未申请模糊权限[ohos.permission.APPROXIMATELY_LOCATION](../../../application-dev/security/permission-list.md#ohospermissionapproximately_location)的情况下,同时请求后台位置权限[ohos.permission.LOCATION_IN_BACKGROUND](../../../application-dev/security/permission-list.md#ohospermissionlocation_in_background)及精准权限[ohos.permission.LOCATION](../../../application-dev/security/permission-list.md#ohospermissionlocation); 19 20变更后,上述两种情况将无法拉起弹窗授予权限。应用在申请精准权限或后台权限时,必须同时申请模糊权限。 21 22**变更发生版本** 23 24从OpenHarmony SDK 4.1.1.5开始。 25 26**变更的接口/组件** 27 28@ohos.abilityAccessCtrl.d.ts中requestPermissionsFromUser接口,使用该接口申请位置权限的应用,在申请精准权限或后台权限时,必须同时申请模糊权限。 29 30**可能影响接口** 31 32| 文件 | 方法 | 33| -------- | -------- | 34| @ohos.geolocation.d.ts | geolocation.on('locationChange') | 35| @ohos.geolocation.d.ts | geolocation.off('locationChange') | 36| @ohos.geolocation.d.ts | geolocation.on('locationServiceState') | 37| @ohos.geolocation.d.ts | geolocation.off('locationServiceState') | 38| @ohos.geolocation.d.ts | geolocation.on('cachedGnssLocationsReporting') | 39| @ohos.geolocation.d.ts | geolocation.off('cachedGnssLocationsReporting') | 40| @ohos.geolocation.d.ts | geolocation.on('gnssStatusChange') | 41| @ohos.geolocation.d.ts | geolocation.off('gnssStatusChange') | 42| @ohos.geolocation.d.ts | geolocation.on('nmeaMessageChange') | 43| @ohos.geolocation.d.ts | geolocation.off('nmeaMessageChange') | 44| @ohos.geolocation.d.ts | geolocation.on('fenceStatusChange') | 45| @ohos.geolocation.d.ts | geolocation.off('fenceStatusChange') | 46| @ohos.geolocation.d.ts | geolocation.getCurrentLocation | 47| @ohos.geolocation.d.ts | geolocation.getLastLocation | 48| @ohos.geolocation.d.ts | geolocation.isLocationEnabled | 49| @ohos.geolocation.d.ts | geolocation.requestEnableLocation | 50| @ohos.geolocation.d.ts | geolocation.isGeoServiceAvailable | 51| @ohos.geolocation.d.ts | geolocation.getAddressesFromLocation | 52| @ohos.geolocation.d.ts | geolocation.getAddressesFromLocationName | 53| @ohos.geolocation.d.ts | geolocation.getCachedGnssLocationsSize | 54| @ohos.geolocation.d.ts | geolocation.flushCachedGnssLocations | 55| @ohos.geolocation.d.ts | geolocation.sendCommand | 56| @ohos.geolocation.d.ts | SatelliteStatusInfo | 57| @ohos.geolocation.d.ts | CachedGnssLocationsRequest | 58| @ohos.geolocation.d.ts | GeofenceRequest | 59| @ohos.geolocation.d.ts | Geofence | 60| @ohos.geolocation.d.ts | ReverseGeoCodeRequest | 61| @ohos.geolocation.d.ts | GeoCodeRequest | 62| @ohos.geolocation.d.ts | GeoAddress | 63| @ohos.geolocation.d.ts | LocationRequest | 64| @ohos.geolocation.d.ts | CurrentLocationRequest | 65| @ohos.geolocation.d.ts | Location | 66| @ohos.geoLocationManager.d.ts | geoLocationManager.on('nmeaMessage') | 67| @ohos.geoLocationManager.d.ts | geoLocationManager.off('nmeaMessage') | 68| @ohos.geoLocationManager.d.ts | geoLocationManager.on('locatingRequiredDataChange') | 69| @ohos.geoLocationManager.d.ts | geoLocationManager.off('locatingRequiredDataChange') | 70| @ohos.geoLocationManager.d.ts | geoLocationManager.getLocatingRequiredData | 71| @ohos.bluetooth.d.ts | bluetooth.startBluetoothDiscovery | 72| @ohos.bluetooth.d.ts | startBLEScan | 73| @ohos.bluetoothManager.d.ts | bluetoothManager.startBluetoothDiscovery | 74| @ohos.bluetoothManager.d.ts | startBLEScan | 75| @ohos.telephony.observer.d.ts | observer.on('cellInfoChange') | 76| @ohos.telephony.radio.d.ts | radio.sendUpdateCellLocationRequest | 77| @ohos.telephony.radio.d.ts | radio.getCellInformation | 78| @system.geolocation.d.ts | GetLocationOption | 79| @system.geolocation.d.ts | SubscribeLocationOption | 80| @system.geolocation.d.ts | geolocation.getLocation | 81| @system.geolocation.d.ts | geolocation.subscribe | 82| @system.geolocation.d.ts | geolocation.unsubscribe | 83| @ohos.wifi.d.ts | wifi.scan | 84| @ohos.wifi.d.ts | wifi.getScanInfos | 85| @ohos.wifi.d.ts | wifi.getDeviceConfigs | 86| @ohos.wifi.d.ts | wifi.getStations | 87| @ohos.wifi.d.ts | wifi.getCurrentGroup | 88| @ohos.wifi.d.ts | wifi.getP2pPeerDevices | 89| @ohos.wifi.d.ts | wifi.p2pConnect | 90| @ohos.wifi.d.ts | wifi.startDiscoverDevices | 91| @ohos.wifi.d.ts | wifi.on('p2pDeviceChange') | 92| @ohos.wifi.d.ts | wifi.off('p2pDeviceChange') | 93| @ohos.wifi.d.ts | wifi.on('p2pPeerDeviceChange') | 94| @ohos.wifi.d.ts | wifi.off('p2pPeerDeviceChange') | 95| @ohos.wifiManager.d.ts | wifiManager.scan | 96| @ohos.wifiManager.d.ts | wifiManager.getScanResults | 97| @ohos.wifiManager.d.ts | wifiManager.getScanResultsSync | 98| @ohos.wifiManager.d.ts | wifiManager.getCandidateConfigs | 99| @ohos.wifiManager.d.ts | wifiManager.getDeviceConfigs | 100| @ohos.wifiManager.d.ts | wifiManager.getStations | 101| @ohos.wifiManager.d.ts | wifiManager.getCurrentGroup | 102| @ohos.wifiManager.d.ts | wifiManager.getP2pPeerDevices | 103| @ohos.wifiManager.d.ts | wifiManager.p2pConnect | 104| @ohos.wifiManager.d.ts | wifiManager.startDiscoverDevices | 105| @ohos.wifiManager.d.ts | wifiManager.getP2pGroups | 106| @ohos.wifiManager.d.ts | wifiManager.on('p2pDeviceChange') | 107| @ohos.wifiManager.d.ts | wifiManager.off('p2pDeviceChange') | 108| @ohos.wifiManager.d.ts | wifiManager.on('p2pPeerDeviceChange') | 109| @ohos.wifiManager.d.ts | wifiManager.off('p2pPeerDeviceChange') | 110 111**适配指导** 112 113修改EntryAbility.ets和导入GlobalThis等步骤参考[requestPermissionsFromUser](../../../application-dev/reference/apis/js-apis-abilityAccessCtrl.md#requestpermissionsfromuser9) 114 115```ts 116 let context: common.UIAbilityContext = GlobalThis.getInstance().getContext('context'); 117 atManager.requestPermissionsFromUser(context, ['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION', 'ohos.permission.LOCATION_IN_BACKGROUND']).then((data) => { 118 console.info('data:' + JSON.stringify(data)); 119 }).catch((err: BusinessError) => { 120 console.info('data:' + JSON.stringify(err)); 121 }) 122``` 123