@@ -131,7 +131,16 @@ function _requestLocationPermissions(always: boolean): Promise<void> {
131131 } ) ;
132132 } else {
133133 ApplicationSettings . setBoolean ( 'askedForWhileUsePermission' , true ) ;
134- permissions . requestPermission ( ( < any > android ) . Manifest . permission . ACCESS_FINE_LOCATION ) . then ( resolve , reject ) ;
134+ permissions . requestPermissions ( [ ( < any > android ) . Manifest . permission . ACCESS_FINE_LOCATION , ( < any > android ) . Manifest . permission . ACCESS_COARSE_LOCATION ] )
135+ . then ( ( value ) => {
136+ resolve ( value ) ;
137+ } ) . catch ( ( err ) => {
138+ if ( ! err [ "android.permission.ACCESS_COARSE_LOCATION" ] && ! err [ "android.permission.ACCESS_FINE_LOCATION" ] ) {
139+ reject ( err ) ;
140+ } else if ( ! err [ "android.permission.ACCESS_FINE_LOCATION" ] && err [ "android.permission.ACCESS_COARSE_LOCATION" ] ) {
141+ resolve ( ) ;
142+ }
143+ } )
135144 }
136145 }
137146 } ) ;
@@ -174,7 +183,7 @@ export function watchLocation(successCallback: successCallbackType, errorCallbac
174183 const zonedSuccessCallback = zonedCallback ( successCallback ) ;
175184 const zonedErrorCallback = zonedCallback ( errorCallback ) ;
176185
177- if ( ( ! permissions . hasPermission ( ( < any > android ) . Manifest . permission . ACCESS_FINE_LOCATION ) || ! _isGooglePlayServicesAvailable ( ) ) && ! LocationManager . shouldSkipChecks ( ) ) {
186+ if ( ( ! permissions . hasPermission ( ( < any > android ) . Manifest . permission . ACCESS_FINE_LOCATION ) && ! permissions . hasPermission ( ( < any > android ) . Manifest . permission . ACCESS_COARSE_LOCATION ) || ! _isGooglePlayServicesAvailable ( ) ) && ! LocationManager . shouldSkipChecks ( ) ) {
178187 throw new Error ( 'Cannot watch location. Call "enableLocationRequest" first' ) ;
179188 }
180189
@@ -332,7 +341,7 @@ function _permissionIsGiven(always: boolean): boolean {
332341
333342export function isEnabled ( options ?: Options ) : Promise < boolean > {
334343 return new Promise ( function ( resolve , reject ) {
335- if ( ! _isGooglePlayServicesAvailable ( ) || ! permissions . hasPermission ( ( < any > android ) . Manifest . permission . ACCESS_FINE_LOCATION ) ) {
344+ if ( ! _isGooglePlayServicesAvailable ( ) || ! permissions . hasPermission ( ( < any > android ) . Manifest . permission . ACCESS_FINE_LOCATION ) && ! permissions . hasPermission ( ( < any > android ) . Manifest . permission . ACCESS_COARSE_LOCATION ) ) {
336345 resolve ( false ) ;
337346 } else {
338347 _isLocationServiceEnabled ( options ) . then (
0 commit comments