/**
   * 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;
    }
  }
Пример #4
0
  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());
    }
  }
Пример #5
0
  @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;
    }
  }
Пример #6
0
  @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;
  }