Beispiel #1
0
    @SuppressWarnings("unchecked")
    @Override
    protected Exception doInBackground(String... params) {

      // authentication failed before, retry with token invalidation

      Exception exception = null;

      String authtoken = ((AndlyticsApp) getApplication()).getAuthToken();

      List<AppInfo> appDownloadInfos = null;
      try {

        DeveloperConsole console = new DeveloperConsole(Main.this);
        appDownloadInfos = console.getAppDownloadInfos(authtoken, accountname);

        if (cancelRequested) {
          cancelRequested = false;
          return null;
        }

        Map<String, List<String>> admobAccountSiteMap = new HashMap<String, List<String>>();

        for (AppInfo appDownloadInfo : appDownloadInfos) {
          // update in database
          db.insertOrUpdateStats(appDownloadInfo);
          String admobSiteId =
              Preferences.getAdmobSiteId(Main.this, appDownloadInfo.getPackageName());
          if (admobSiteId != null) {
            String admobAccount = Preferences.getAdmobAccount(Main.this, admobSiteId);
            if (admobAccount != null) {
              List<String> siteList = admobAccountSiteMap.get(admobAccount);
              if (siteList == null) {
                siteList = new ArrayList<String>();
              }
              siteList.add(admobSiteId);
              admobAccountSiteMap.put(admobAccount, siteList);
            }
          }
        }

        // sync admob accounts
        Set<String> admobAccuntKeySet = admobAccountSiteMap.keySet();
        for (String admobAccount : admobAccuntKeySet) {

          AdmobRequest.syncSiteStats(
              admobAccount, Main.this, admobAccountSiteMap.get(admobAccount), null);
        }

        new LoadIconInCache().execute(appDownloadInfos);

      } catch (Exception e) {

        if (e instanceof IOException) {
          e = new NetworkException(e);
        }

        exception = e;

        Log.e(TAG, "error while requesting developer console", e);
      }

      if (dotracking == true) {
        int size = 0;
        if (appDownloadInfos != null) {
          size = appDownloadInfos.size();
        }
        // TODO endless loop in case of exception!!!
        if (exception == null) {
          Map<String, String> map = new HashMap<String, String>();
          map.put("num", size + "");
        } else {
        }
        dotracking = false;
      }

      return exception;
    }