Skip to content

Commit 3082041

Browse files
committed
refactor: change target provider to check
1 parent 77dff7d commit 3082041

File tree

1 file changed

+15
-34
lines changed

1 file changed

+15
-34
lines changed

src/android/Geolocation.java

+15-34
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ Licensed to the Apache Software Foundation (ASF) under one
1414
specific language governing permissions and limitations
1515
under the License.
1616
*/
17-
18-
1917
package org.apache.cordova.geolocation;
2018

2119
import android.content.Context;
@@ -32,27 +30,23 @@ Licensed to the Apache Software Foundation (ASF) under one
3230
import org.json.JSONArray;
3331
import org.json.JSONException;
3432

35-
3633
public class Geolocation extends CordovaPlugin {
3734

3835
String TAG = "GeolocationPlugin";
3936
CallbackContext context;
4037

41-
42-
String [] highAccuracyPermissions = { Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION };
43-
String [] lowAccuracyPermissions = { Manifest.permission.ACCESS_COARSE_LOCATION };
44-
String [] permissionsToRequest;
38+
String[] highAccuracyPermissions = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};
39+
String[] lowAccuracyPermissions = {Manifest.permission.ACCESS_COARSE_LOCATION};
40+
String[] permissionsToRequest;
4541
String[] permissionsToCheck;
4642

4743
LocationManager manager;
4844

4945
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
5046
LOG.d(TAG, "We are entering execute");
5147
context = callbackContext;
52-
if(action.equals("getPermission"))
53-
{
54-
if(!isLocationProviderAvailable())
55-
{
48+
if (action.equals("getPermission")) {
49+
if (!isLocationProviderAvailable()) {
5650
LOG.d(TAG, "Location Provider Unavailable!");
5751
PluginResult result = new PluginResult(PluginResult.Status.ILLEGAL_ACCESS_EXCEPTION);
5852
context.sendPluginResult(result);
@@ -66,36 +60,28 @@ public boolean execute(String action, JSONArray args, CallbackContext callbackCo
6660
// See https://bugs.chromium.org/p/chromium/issues/detail?id=1269362
6761
permissionsToRequest = Build.VERSION.SDK_INT <= 31 ? highAccuracyPermissions : permissionsToCheck;
6862

69-
if(hasPermission(permissionsToCheck))
70-
{
63+
if (hasPermission(permissionsToCheck)) {
7164
PluginResult r = new PluginResult(PluginResult.Status.OK, Build.VERSION.SDK_INT);
7265
context.sendPluginResult(r);
7366
return true;
74-
}
75-
else {
67+
} else {
7668
PermissionHelper.requestPermissions(this, 0, permissionsToRequest);
7769
}
7870
return true;
7971
}
8072
return false;
8173
}
8274

83-
84-
public void onRequestPermissionResult(int requestCode, String[] permissions,
85-
int[] grantResults) throws JSONException
86-
{
75+
public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) {
8776
PluginResult result;
8877
//This is important if we're using Cordova without using Cordova, but we have the geolocation plugin installed
89-
if(context != null) {
90-
for (int i=0; i<grantResults.length; i++) {
91-
int r = grantResults[i];
92-
String p = permissions[i];
78+
if (context != null) {
79+
for (int r : grantResults) {
9380
if (r == PackageManager.PERMISSION_GRANTED) {
9481
result = new PluginResult(PluginResult.Status.OK);
9582
context.sendPluginResult(result);
9683
return;
9784
}
98-
9985
}
10086
LOG.d(TAG, "Permission Denied!");
10187
result = new PluginResult(PluginResult.Status.ILLEGAL_ACCESS_EXCEPTION);
@@ -104,10 +90,8 @@ public void onRequestPermissionResult(int requestCode, String[] permissions,
10490
}
10591

10692
public boolean hasPermission(String[] permissions) {
107-
for(String p : permissions)
108-
{
109-
if(PermissionHelper.hasPermission(this, p))
110-
{
93+
for (String p : permissions) {
94+
if (PermissionHelper.hasPermission(this, p)) {
11195
return true;
11296
}
11397
}
@@ -118,15 +102,12 @@ public boolean hasPermission(String[] permissions) {
118102
* We override this so that we can access the permissions variable, which no longer exists in
119103
* the parent class, since we can't initialize it reliably in the constructor!
120104
*/
121-
122-
public void requestPermissions(int requestCode)
123-
{
105+
public void requestPermissions(int requestCode) {
124106
PermissionHelper.requestPermissions(this, requestCode, permissionsToRequest);
125107
}
126108

127-
private boolean isLocationProviderAvailable()
128-
{
109+
private boolean isLocationProviderAvailable() {
129110
manager = (LocationManager) this.cordova.getActivity().getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
130-
return manager.isProviderEnabled(LocationManager.FUSED_PROVIDER);
111+
return manager.isProviderEnabled(LocationManager.GPS_PROVIDER) || manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
131112
}
132113
}

0 commit comments

Comments
 (0)