/** * onConnected is called when our Activity successfully connects to Google Play services. * onConnected indicates that an account was selected on the device, that the selected account has * granted any requested permissions to our app and that we were able to establish a service * connection to Google Play services. */ @Override public void onConnected(Bundle connectionHint) { final Person user = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient); // The new cordova permission API's are available since Cordova-Android 5, // so if you're using API level 23 and want to deploy to Android 6, // make sure you're building with Cordova-Android 5 or higher. // .. it was either this or adding an Android Support library. try { Method hasPermissionMethod = cordova.getClass().getMethod("hasPermission", String.class); if (hasPermissionMethod != null) { if (!(Boolean) hasPermissionMethod.invoke(cordova, Manifest.permission.GET_ACCOUNTS)) { Method requestPermissionMethod = cordova .getClass() .getMethod("requestPermission", CordovaPlugin.class, int.class, String.class); requestPermissionMethod.invoke( cordova, this, REQUEST_GET_ACCOUNTS, Manifest.permission.GET_ACCOUNTS); } } } catch (Exception ignore) { } this.email = Plus.AccountApi.getAccountName(mGoogleApiClient); this.result = new JSONObject(); try { result.put("email", email); // in case there was no internet connection, this may be null if (user != null) { result.put("userId", user.getId()); result.put("displayName", user.getDisplayName()); result.put("gender", getGender(user.getGender())); if (user.getImage() != null) { result.put("imageUrl", user.getImage().getUrl()); } if (user.getName() != null) { result.put("givenName", user.getName().getGivenName()); result.put("middleName", user.getName().getMiddleName()); result.put("familyName", user.getName().getFamilyName()); if (user.hasAgeRange()) { if (user.getAgeRange().hasMin()) { result.put("ageRangeMin", user.getAgeRange().getMin()); } if (user.getAgeRange().hasMax()) { result.put("ageRangeMax", user.getAgeRange().getMax()); } } if (user.hasBirthday()) { result.put("birthday", user.getBirthday()); } } } resolveToken(email, result); } catch (JSONException e) { savedCallbackContext.error("result parsing trouble, error: " + e.getMessage()); } }
public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) throws JSONException { if (requestCode != REQUEST_GET_ACCOUNTS) { return; } for (int i = 0; i < permissions.length; i++) { if (permissions[i].equals(Manifest.permission.GET_ACCOUNTS) && grantResults[i] == PackageManager.PERMISSION_GRANTED) { onConnected(cacheBundle); return; } } savedCallbackContext.error("Must allow Get Account permissions."); }
@Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { this.callbackContext = callbackContext; JSONObject options = null; try { options = args.getJSONObject(1); } catch (JSONException e) { // Developer provided no options. Leave options null. } if (ACTION_PLAY_AUDIO.equals(action)) { return playAudio(args.getString(0), options); } else if (ACTION_PLAY_VIDEO.equals(action)) { return playVideo(args.getString(0), options); } else { callbackContext.error("streamingMedia." + action + " is not a supported method."); return false; } }
private void execHelper( final String service, final String action, final String callbackId, final String rawArgs) { CordovaPlugin plugin = getPlugin(service); if (plugin == null) { Log.d(TAG, "exec() call to unknown plugin: " + service); PluginResult cr = new PluginResult(PluginResult.Status.CLASS_NOT_FOUND_EXCEPTION); app.sendPluginResult(cr, callbackId); return; } CallbackContext callbackContext = new CallbackContext(callbackId, app); try { long pluginStartTime = System.currentTimeMillis(); boolean wasValidAction = plugin.execute(action, rawArgs, callbackContext); long duration = System.currentTimeMillis() - pluginStartTime; if (duration > SLOW_EXEC_WARNING_THRESHOLD) { Log.w( TAG, "THREAD WARNING: exec() call to " + service + "." + action + " blocked the main thread for " + duration + "ms. Plugin should use CordovaInterface.getThreadPool()."); } if (!wasValidAction) { PluginResult cr = new PluginResult(PluginResult.Status.INVALID_ACTION); callbackContext.sendPluginResult(cr); } } catch (JSONException e) { PluginResult cr = new PluginResult(PluginResult.Status.JSON_EXCEPTION); callbackContext.sendPluginResult(cr); } catch (Exception e) { Log.e(TAG, "Uncaught exception from plugin", e); callbackContext.error(e.getMessage()); } }
@Override public boolean execute(String action, JSONArray data, CallbackContext callbackContext) throws JSONException { if (action.equals("extract")) { try { String id = data.getString(0); String[] serverPremium = { "s210", "s00", "s40", "s10", "s20", "s30", "s50", "s70", "s80", "s90", "s100", "s110", "s120", "s130", "s140", "s160", "s170", "s180", "s190", "s200", "s220", "s230", "s240", "s250", "s260", "s270", "s280", "s290" }; URL url = new URL("http://www.nowvideo.li/mobile/video.php?id=" + id + "&download=2"); URLConnection connection = null; String content = null; connection = url.openConnection(); Scanner scanner = new Scanner(connection.getInputStream()); scanner.useDelimiter("\\Z"); content = scanner.next(); String[] array = content.split("<source src=\"http://"); String link = ""; if (array.length > 2) link = array[2].split("\"")[0]; else link = array[1].split("\"")[0]; String originalServer = link.substring(0, link.indexOf('.')); String restOfLink = link.substring(link.indexOf('.') + 1, link.length()); System.out.println(link); System.out.println(originalServer); System.out.println(restOfLink); String server = originalServer.substring(0, originalServer.length() - 1) + "0"; URL urlVideo = new URL("http://" + server + "." + restOfLink); int responseCode = 0; try { HttpURLConnection huc = (HttpURLConnection) urlVideo.openConnection(); huc.setRequestMethod("HEAD"); huc.setConnectTimeout(2000); responseCode = huc.getResponseCode(); if (responseCode != 200) throw new Exception(); callbackContext.success("http://" + server + "." + restOfLink); } catch (Exception e) { for (String tryServer : serverPremium) { try { urlVideo = new URL("http://" + tryServer + "." + restOfLink); HttpURLConnection huc = (HttpURLConnection) urlVideo.openConnection(); huc.setRequestMethod("HEAD"); huc.setConnectTimeout(2000); responseCode = huc.getResponseCode(); if (responseCode != 200) throw new Exception(); callbackContext.success("http://" + tryServer + "." + restOfLink); } catch (Exception exc) { } } callbackContext.success("http://" + originalServer + "." + restOfLink); } } catch (Exception ex) { callbackContext.error(ex.toString()); } return true; } else { return false; } }
@Override public boolean execute(String action, JSONArray data, CallbackContext callbackContext) { boolean result; Log.v(TAG, "execute: action=" + action); if (INITIALIZE.equals(action)) { try { context = getApplicationContext(); saveConfiguration(context, data.getString(0)); result = true; } catch (JSONException e) { Log.e(TAG, "execute: Got JSON Exception " + e.getMessage()); result = false; callbackContext.error(e.getMessage()); } clearNotificationQueue(context); } else if (REGISTER.equals(action)) { Log.v(TAG, "execute: data=" + data.toString()); try { context = getApplicationContext(); JSONObject jo = data.getJSONObject(0); gWebView = this.webView; Log.v(TAG, "execute: jo=" + jo.toString()); gECB = (String) jo.get("ecb"); gSenderID = (String) jo.get("senderID"); Log.v(TAG, "execute: ECB=" + gECB + " senderID=" + gSenderID); regid = getRegistrationId(getApplicationContext()); if (regid.isEmpty()) { new AsyncRegister().execute(callbackContext); } else { sendJavascript(new JSONObject().put("event", "registered").put("regid", regid)); callbackContext.success(regid); } result = true; } catch (JSONException e) { Log.e(TAG, "execute: Got JSON Exception " + e.getMessage()); result = false; callbackContext.error(e.getMessage()); } if (gCachedExtras != null) { Log.v(TAG, "sending cached extras"); sendExtras(gCachedExtras); gCachedExtras = null; } } else if (ARE_NOTIFICATIONS_ENABLED.equals(action)) { Log.v(TAG, "ARE_NOTIFICATIONS_ENABLED"); final boolean registered = !getRegistrationId(getApplicationContext()).isEmpty(); Log.d(TAG, "areNotificationsEnabled? " + registered); callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, registered)); result = true; } else if (UNREGISTER.equals(action)) { GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(getApplicationContext()); try { gcm.unregister(); removeRegistrationId(getApplicationContext()); } catch (IOException exception) { Log.d(TAG, "IOException!"); } Log.v(TAG, "UNREGISTER"); result = true; callbackContext.success(); } else { result = false; Log.e(TAG, "Invalid action : " + action); callbackContext.error("Invalid action : " + action); } return result; }