summaryrefslogtreecommitdiff
path: root/StoneIsland/plugins/cordova-plugin-geolocation/src/android/Geolocation.java
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/plugins/cordova-plugin-geolocation/src/android/Geolocation.java')
-rw-r--r--StoneIsland/plugins/cordova-plugin-geolocation/src/android/Geolocation.java107
1 files changed, 107 insertions, 0 deletions
diff --git a/StoneIsland/plugins/cordova-plugin-geolocation/src/android/Geolocation.java b/StoneIsland/plugins/cordova-plugin-geolocation/src/android/Geolocation.java
new file mode 100644
index 00000000..6452170a
--- /dev/null
+++ b/StoneIsland/plugins/cordova-plugin-geolocation/src/android/Geolocation.java
@@ -0,0 +1,107 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+
+package org.apache.cordova.geolocation;
+
+import android.content.pm.PackageManager;
+import android.Manifest;
+import android.os.Build;
+
+import org.apache.cordova.CallbackContext;
+import org.apache.cordova.CordovaArgs;
+import org.apache.cordova.CordovaPlugin;
+import org.apache.cordova.PermissionHelper;
+import org.apache.cordova.PluginResult;
+import org.apache.cordova.LOG;
+import org.json.JSONArray;
+import org.json.JSONException;
+
+import javax.security.auth.callback.Callback;
+
+public class Geolocation extends CordovaPlugin {
+
+ String TAG = "GeolocationPlugin";
+ CallbackContext context;
+
+ String [] permissions = { Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION };
+
+
+ public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
+ LOG.d(TAG, "We are entering execute");
+ context = callbackContext;
+ if(action.equals("getPermission"))
+ {
+ if(hasPermisssion())
+ {
+ PluginResult r = new PluginResult(PluginResult.Status.OK);
+ context.sendPluginResult(r);
+ return true;
+ }
+ else {
+ PermissionHelper.requestPermissions(this, 0, permissions);
+ }
+ return true;
+ }
+ return false;
+ }
+
+
+ public void onRequestPermissionResult(int requestCode, String[] permissions,
+ int[] grantResults) throws JSONException
+ {
+ PluginResult result;
+ //This is important if we're using Cordova without using Cordova, but we have the geolocation plugin installed
+ if(context != null) {
+ for (int r : grantResults) {
+ if (r == PackageManager.PERMISSION_DENIED) {
+ LOG.d(TAG, "Permission Denied!");
+ result = new PluginResult(PluginResult.Status.ILLEGAL_ACCESS_EXCEPTION);
+ context.sendPluginResult(result);
+ return;
+ }
+
+ }
+ result = new PluginResult(PluginResult.Status.OK);
+ context.sendPluginResult(result);
+ }
+ }
+
+ public boolean hasPermisssion() {
+ for(String p : permissions)
+ {
+ if(!PermissionHelper.hasPermission(this, p))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /*
+ * We override this so that we can access the permissions variable, which no longer exists in
+ * the parent class, since we can't initialize it reliably in the constructor!
+ */
+
+ public void requestPermissions(int requestCode)
+ {
+ PermissionHelper.requestPermissions(this, requestCode, permissions);
+ }
+
+
+
+}