- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 79
 
Open
Description
requestLocationPermission is passed a callback which is never invoked if the user denies permissions. If the user calls startScanning and this happens, the promise returned by startScanning never resolves as the callback is never invoked and no error is propagated to the user application.
startScanning needs to account for requestLocationPermission potentially rejecting and rethrow this error to the caller.
Lines 1235 to 1261 in 9820235
| public requestLocationPermission(callback?: () => void): Promise<boolean> { | |
| return new Promise((resolve, reject) => { | |
| let permissionCb = (args: AndroidActivityRequestPermissionsEventData) => { | |
| if (args.requestCode === ACCESS_LOCATION_PERMISSION_REQUEST_CODE) { | |
| andApp.off(AndroidApplication.activityRequestPermissionsEvent, permissionCb); | |
| permissionCb = null; | |
| for (let i = 0; i < args.permissions.length; i++) { | |
| if (args.grantResults[i] === android.content.pm.PackageManager.PERMISSION_DENIED) { | |
| reject('Permission denied'); | |
| return; | |
| } | |
| } | |
| if (callback) { | |
| callback(); | |
| } | |
| resolve(true); | |
| } | |
| }; | |
| // grab the permission dialog result | |
| andApp.on(AndroidApplication.activityRequestPermissionsEvent, permissionCb); | |
| const neededPermission = sdkVersion < ANDROID10 ? android.Manifest.permission.ACCESS_COARSE_LOCATION : android.Manifest.permission.ACCESS_FINE_LOCATION; | |
| // invoke the permission dialog | |
| androidx.core.app.ActivityCompat.requestPermissions(this._getActivity(), [neededPermission], ACCESS_LOCATION_PERMISSION_REQUEST_CODE); | |
| }); | |
| } | 
Metadata
Metadata
Assignees
Labels
No labels