Got the PoC working with the Contacts plugin, going to work through all the plugins

This commit is contained in:
Joe Bowser 2015-08-31 15:32:53 -07:00
parent a0747aa960
commit 5e0c9595c3
5 changed files with 24 additions and 19 deletions

View File

@ -493,7 +493,16 @@ public class CordovaActivity extends Activity {
@Override @Override
public void onRequestPermissionsResult(int requestCode, String permissions[], public void onRequestPermissionsResult(int requestCode, String permissions[],
int[] grantResults) { int[] grantResults) {
try
{
cordovaInterface.onRequestPermissionResult(requestCode, permissions, grantResults); cordovaInterface.onRequestPermissionResult(requestCode, permissions, grantResults);
} }
catch (JSONException e)
{
LOG.d(TAG, "JSONException: Parameters fed into the method are not valid");
e.printStackTrace();
}
}
} }

View File

@ -70,6 +70,6 @@ public interface CordovaInterface {
*/ */
public ExecutorService getThreadPool(); public ExecutorService getThreadPool();
public void requestPermission(CordovaPlugin plugin, String permission); public void requestPermission(CordovaPlugin plugin, int requestCode, String permission);
public void requestPermissions(CordovaPlugin plugin); public void requestPermissions(CordovaPlugin plugin, int requestCode);
} }

View File

@ -24,6 +24,8 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import org.json.JSONException;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
@ -171,7 +173,7 @@ public class CordovaInterfaceImpl implements CordovaInterface {
* @param grantResults * @param grantResults
*/ */
public void onRequestPermissionResult(int requestCode, String[] permissions, public void onRequestPermissionResult(int requestCode, String[] permissions,
int[] grantResults) { int[] grantResults) throws JSONException {
if(permissionResultCallback != null) if(permissionResultCallback != null)
{ {
permissionResultCallback.onRequestPermissionResult(requestCode, permissions, grantResults); permissionResultCallback.onRequestPermissionResult(requestCode, permissions, grantResults);
@ -179,19 +181,17 @@ public class CordovaInterfaceImpl implements CordovaInterface {
} }
} }
public void requestPermission(CordovaPlugin plugin, String permission) { public void requestPermission(CordovaPlugin plugin, int requestCode, String permission) {
permissionResultCallback = plugin; permissionResultCallback = plugin;
String[] permissions = new String [1]; String[] permissions = new String [1];
permissions[0] = permission; permissions[0] = permission;
int requestCode = 1;
getActivity().requestPermissions(permissions, requestCode); getActivity().requestPermissions(permissions, requestCode);
} }
public void requestPermissions(CordovaPlugin plugin) public void requestPermissions(CordovaPlugin plugin, int requestCode)
{ {
permissionResultCallback = plugin; permissionResultCallback = plugin;
String[] permissions = plugin.getPermissionRequest(); String[] permissions = plugin.getPermissionRequest();
int requestCode = 1;
getActivity().requestPermissions(permissions, requestCode); getActivity().requestPermissions(permissions, requestCode);
} }

View File

@ -391,15 +391,8 @@ public class CordovaPlugin {
* @param permissions * @param permissions
* @param grantResults * @param grantResults
*/ */
public boolean onRequestPermissionResult(int requestCode, String[] permissions, public void onRequestPermissionResult(int requestCode, String[] permissions,
int[] grantResults) { int[] grantResults) throws JSONException {
for(int r:grantResults)
{
if(r == PackageManager.PERMISSION_DENIED)
return false;
}
return true;
} }
} }

View File

@ -21,6 +21,7 @@ package org.apache.cordova.engine;
import java.util.Arrays; import java.util.Arrays;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.Activity; import android.app.Activity;
import android.content.Context;
import android.content.ActivityNotFoundException; import android.content.ActivityNotFoundException;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@ -63,13 +64,15 @@ public class SystemWebChromeClient extends WebChromeClient {
private View mVideoProgressView; private View mVideoProgressView;
private CordovaDialogsHelper dialogsHelper; private CordovaDialogsHelper dialogsHelper;
private Context appContext;
private WebChromeClient.CustomViewCallback mCustomViewCallback; private WebChromeClient.CustomViewCallback mCustomViewCallback;
private View mCustomView; private View mCustomView;
public SystemWebChromeClient(SystemWebViewEngine parentEngine) { public SystemWebChromeClient(SystemWebViewEngine parentEngine) {
this.parentEngine = parentEngine; this.parentEngine = parentEngine;
dialogsHelper = new CordovaDialogsHelper(parentEngine.webView.getContext()); appContext = parentEngine.webView.getContext();
dialogsHelper = new CordovaDialogsHelper(appContext);
} }
/** /**
@ -186,7 +189,7 @@ public class SystemWebChromeClient extends WebChromeClient {
CordovaPlugin geolocation = parentEngine.pluginManager.getPlugin("Geolocation"); CordovaPlugin geolocation = parentEngine.pluginManager.getPlugin("Geolocation");
if(geolocation != null && !geolocation.hasPermisssion()) if(geolocation != null && !geolocation.hasPermisssion())
{ {
parentEngine.pluginManager.requestPermission(geolocation); //cordova.requestPermissions(geolocation);
} }
} }