You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bo...@apache.org on 2015/10/19 19:32:13 UTC
[08/10] android commit: Refactor of the Cordova Plugin/Permissions API
Refactor of the Cordova Plugin/Permissions API
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/013ad94a
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/013ad94a
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/013ad94a
Branch: refs/heads/master
Commit: 013ad94af0a9f0d1f4d4a90528308ce19840c49d
Parents: 2ceb803
Author: Joe Bowser <bo...@apache.org>
Authored: Wed Sep 30 12:20:40 2015 -0700
Committer: Joe Bowser <bo...@apache.org>
Committed: Mon Oct 19 10:31:56 2015 -0700
----------------------------------------------------------------------
.../org/apache/cordova/CordovaInterface.java | 15 ++++++++++++++-
.../apache/cordova/CordovaInterfaceImpl.java | 20 ++++++++++++++++++--
.../src/org/apache/cordova/CordovaPlugin.java | 18 ++++++++++++++++--
.../cordova/engine/SystemWebChromeClient.java | 2 +-
4 files changed, 49 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/013ad94a/framework/src/org/apache/cordova/CordovaInterface.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaInterface.java b/framework/src/org/apache/cordova/CordovaInterface.java
index 4b43580..3b8468f 100755
--- a/framework/src/org/apache/cordova/CordovaInterface.java
+++ b/framework/src/org/apache/cordova/CordovaInterface.java
@@ -70,6 +70,19 @@ public interface CordovaInterface {
*/
public ExecutorService getThreadPool();
+ /**
+ * Sends a permission request to the activity for one permission.
+ */
public void requestPermission(CordovaPlugin plugin, int requestCode, String permission);
- public void requestPermissions(CordovaPlugin plugin, int requestCode);
+
+ /**
+ * Sends a permission request to the activity for a group of permissions
+ */
+ public void requestPermissions(CordovaPlugin plugin, int requestCode, String [] permissions);
+
+ /**
+ * Check for a permission. Returns true if the permission is granted, false otherwise.
+ */
+ public boolean hasPermission(String permission);
+
}
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/013ad94a/framework/src/org/apache/cordova/CordovaInterfaceImpl.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaInterfaceImpl.java b/framework/src/org/apache/cordova/CordovaInterfaceImpl.java
index ac31189..3f5e69d 100644
--- a/framework/src/org/apache/cordova/CordovaInterfaceImpl.java
+++ b/framework/src/org/apache/cordova/CordovaInterfaceImpl.java
@@ -19,8 +19,11 @@
package org.apache.cordova;
+import android.Manifest;
import android.app.Activity;
import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Build;
import android.os.Bundle;
import android.util.Log;
@@ -188,11 +191,24 @@ public class CordovaInterfaceImpl implements CordovaInterface {
getActivity().requestPermissions(permissions, requestCode);
}
- public void requestPermissions(CordovaPlugin plugin, int requestCode)
+ public void requestPermissions(CordovaPlugin plugin, int requestCode, String [] permissions)
{
permissionResultCallback = plugin;
- String[] permissions = plugin.getPermissionRequest();
getActivity().requestPermissions(permissions, requestCode);
}
+ public boolean hasPermission(String permission)
+ {
+ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
+ {
+ int result = activity.checkSelfPermission(permission);
+ return PackageManager.PERMISSION_GRANTED == result;
+ }
+ else
+ {
+ return true;
+ }
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/013ad94a/framework/src/org/apache/cordova/CordovaPlugin.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaPlugin.java b/framework/src/org/apache/cordova/CordovaPlugin.java
index 7dc18e3..9f211ff 100644
--- a/framework/src/org/apache/cordova/CordovaPlugin.java
+++ b/framework/src/org/apache/cordova/CordovaPlugin.java
@@ -29,6 +29,7 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.net.Uri;
+import android.os.Build;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -365,14 +366,27 @@ public class CordovaPlugin {
/**
* Called by the Plugin Manager when we need to actually request permissions
*
+ * @param requestCode Passed to the activity to track the request
+ *
* @return Returns the permission that was stored in the plugin
*/
- public String[] getPermissionRequest() {
- return permissions;
+ public void requestPermissions(int requestCode) {
+ cordova.requestPermissions(this, requestCode, permissions);
}
+ /*
+ * Called by the WebView implementation to check for geolocation permissions, can be used
+ * by other Java methods in the event that a plugin is using this as a dependency.
+ *
+ * @return Returns true if the plugin has all the permissions it needs to operate.
+ */
+
public boolean hasPermisssion() {
+ if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
+ {
+ return true;
+ }
for(String p : permissions)
{
if(PackageManager.PERMISSION_DENIED == cordova.getActivity().checkSelfPermission(p))
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/013ad94a/framework/src/org/apache/cordova/engine/SystemWebChromeClient.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/engine/SystemWebChromeClient.java b/framework/src/org/apache/cordova/engine/SystemWebChromeClient.java
index 9faae29..6a17e72 100755
--- a/framework/src/org/apache/cordova/engine/SystemWebChromeClient.java
+++ b/framework/src/org/apache/cordova/engine/SystemWebChromeClient.java
@@ -189,7 +189,7 @@ public class SystemWebChromeClient extends WebChromeClient {
CordovaPlugin geolocation = parentEngine.pluginManager.getPlugin("Geolocation");
if(geolocation != null && !geolocation.hasPermisssion())
{
- geolocation.cordova.requestPermissions(geolocation, 0);
+ geolocation.requestPermissions(0);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org