示例#1
0
  public static void seperate(Context c, long rawContactID) {
    ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
    Cursor cursor =
        c.getContentResolver()
            .query(
                RawContacts.CONTENT_URI,
                new String[] {RawContacts.CONTACT_ID},
                RawContacts._ID + " = '" + rawContactID + "'",
                null,
                null);
    if (cursor.moveToFirst()) {
      long contactID = cursor.getLong(cursor.getColumnIndex(RawContacts.CONTACT_ID));
      Set<Long> ids = getRawContacts(c, contactID, rawContactID);
      for (long id : ids) {
        ContentProviderOperation.Builder builder =
            ContentProviderOperation.newUpdate(ContactsContract.AggregationExceptions.CONTENT_URI);
        builder.withValue(ContactsContract.AggregationExceptions.RAW_CONTACT_ID1, rawContactID);
        builder.withValue(ContactsContract.AggregationExceptions.RAW_CONTACT_ID2, id);
        builder.withValue(
            ContactsContract.AggregationExceptions.TYPE,
            ContactsContract.AggregationExceptions.TYPE_KEEP_SEPARATE);
        operationList.add(builder.build());
      }

      if (operationList.size() > 0)
        try {
          c.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);
        } catch (RemoteException e) {
          Log.e("Error", e.getLocalizedMessage());
        } catch (OperationApplicationException e) {
          Log.e("Error", e.getLocalizedMessage());
        }
    }
    cursor.close();
  }
  @Override
  public ArrayList<ContentProviderOperation> parse(String parser, ContentResolver resolver)
      throws IOException, JSONException {
    // TODO Auto-generated method stub

    Log.v("TAG", "ENTER INTO DASHBORED");

    ArrayList<ContentProviderOperation> batch = new ArrayList<ContentProviderOperation>();

    ContentProviderOperation.Builder builder_delete =
        ContentProviderOperation.newDelete(Dashboards.CONTENT_URI);
    batch.add(builder_delete.build());

    if (parser != null) {
      Gson gson = new Gson();
      dashBoard = gson.fromJson(parser, Dashboard.class);
      final ContentProviderOperation.Builder builder =
          ContentProviderOperation.newInsert(Dashboards.CONTENT_URI);
      builder.withValue(Dashboards.PATIENT_ID, dashBoard.getPatientId());
      builder.withValue(Dashboards.JSON, parser);
      batch.add(builder.build());

      Log.v("dashboard", dashBoard.getPatientId());
      Log.v("TAG", "LOADED INTO DATABASE");
    }
    return batch;
  }
示例#3
0
 private void saveDirection(String polyline) {
   ContentProviderOperation.Builder b =
       ContentProviderOperation.newInsert(DirectionMetaData.TableMetaData.CONTENT_URI);
   b.withValue(DirectionMetaData.TableMetaData.END_ADDRESS, mTripLeg.destName);
   b.withValue(DirectionMetaData.TableMetaData.OVERVIEW_POLYLINE, polyline);
   b.withValue(DirectionMetaData.TableMetaData.START_ADDRESS, mTripLeg.originName);
   b.withValue(DirectionMetaData.TableMetaData.TRIP_LEG_ID, mTripLeg.id);
   b.withValue(DirectionMetaData.TableMetaData.DIRECTION_MODE, getMode(mTripLeg));
   mDbOperations.add(b.build());
 }
示例#4
0
 private static void a(Account paramAccount, String paramString1, String paramString2)
 {
   g5.b(z[3] + paramString1 + z[9] + paramString2);
   ArrayList localArrayList = new ArrayList();
   ContentProviderOperation.Builder localBuilder1 = ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI);
   localBuilder1.withValue(z[4], paramAccount.name);
   localBuilder1.withValue(z[10], paramAccount.type);
   localBuilder1.withValue(z[13], paramString2);
   localArrayList.add(localBuilder1.build());
   ContentProviderOperation.Builder localBuilder2 = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
   localBuilder2.withValueBackReference(z[6], 0);
   localBuilder2.withValue(z[11], z[8]);
   localBuilder2.withValue(z[0], paramString1);
   localArrayList.add(localBuilder2.build());
   ContentProviderOperation.Builder localBuilder3 = ContentProviderOperation.newInsert(a(ContactsContract.Data.CONTENT_URI));
   localBuilder3.withValueBackReference(z[6], 0);
   localBuilder3.withValue(z[11], z[2]);
   localBuilder3.withValue(z[0], paramString2);
   localBuilder3.withValue(z[12], App.Mb.getString(2131296836));
   localBuilder3.withValue(z[1], "+" + paramString2.substring(0, paramString2.indexOf("@")));
   localArrayList.add(localBuilder3.build());
   try
   {
     App.ib.applyBatch(z[5], localArrayList);
     return;
   }
   catch (Exception localException)
   {
     while (true)
       g5.d(z[7] + paramString1 + z[9] + paramString2 + localException.toString());
   }
 }
示例#5
0
  private void buildSpeaker(
      boolean isInsert, Speaker speaker, ArrayList<ContentProviderOperation> list) {
    Uri allSpeakersUri =
        ScheduleContractHelper.setUriAsCalledFromSyncAdapter(ScheduleContract.Speakers.CONTENT_URI);
    Uri thisSpeakerUri =
        ScheduleContractHelper.setUriAsCalledFromSyncAdapter(
            ScheduleContract.Speakers.buildSpeakerUri(speaker.id));

    ContentProviderOperation.Builder builder;
    if (isInsert) {
      builder = ContentProviderOperation.newInsert(allSpeakersUri);
    } else {
      builder = ContentProviderOperation.newUpdate(thisSpeakerUri);
    }

    list.add(
        builder
            .withValue(ScheduleContract.SyncColumns.UPDATED, System.currentTimeMillis())
            .withValue(ScheduleContract.Speakers.SPEAKER_ID, speaker.id)
            .withValue(ScheduleContract.Speakers.SPEAKER_NAME, speaker.name)
            .withValue(ScheduleContract.Speakers.SPEAKER_ABSTRACT, speaker.bio)
            .withValue(ScheduleContract.Speakers.SPEAKER_COMPANY, speaker.company)
            .withValue(ScheduleContract.Speakers.SPEAKER_IMAGE_URL, speaker.thumbnailUrl)
            .withValue(ScheduleContract.Speakers.SPEAKER_PLUSONE_URL, speaker.plusoneUrl)
            .withValue(ScheduleContract.Speakers.SPEAKER_TWITTER_URL, speaker.twitterUrl)
            .withValue(
                ScheduleContract.Speakers.SPEAKER_IMPORT_HASHCODE, speaker.getImportHashcode())
            .build());
  }
  public static ContentProviderOperation buildBatchOperation(JSONObject jsonObject)
      throws JSONException {
    ContentProviderOperation.Builder builder =
        ContentProviderOperation.newInsert(QuoteProvider.Quotes.CONTENT_URI);

    if (!jsonObject.getString(CHANGE).equals(NULL) && !jsonObject.getString(BID).equals(NULL)) {
      String change = jsonObject.getString(CHANGE);
      builder.withValue(QuoteColumns.SYMBOL, jsonObject.getString(SYMBOL));
      builder.withValue(QuoteColumns.BIDPRICE, truncateBidPrice(jsonObject.getString(BID)));
      builder.withValue(
          QuoteColumns.PERCENT_CHANGE,
          truncateChange(jsonObject.getString(CHANGE_IN_PERCENT), true));
      builder.withValue(QuoteColumns.CHANGE, truncateChange(change, false));
      builder.withValue(QuoteColumns.ISCURRENT, 1);
      if (change.charAt(0) == '-') {
        builder.withValue(QuoteColumns.ISUP, 0);
      } else {
        builder.withValue(QuoteColumns.ISUP, 1);
      }

    } else {
      return null;
    }
    return builder.build();
  }
 public boolean checkOperationBuilder(
     String accountType,
     ContentProviderOperation.Builder builder,
     Cursor cursor,
     int type,
     String commd) {
   if (type == TYPE_OPERATION_INSERT) {
     builder.withValue(Data.DATA2, 2);
     return true;
   }
   return false;
 }
示例#8
0
  private void insertSingleContact(String name, String phone, String email, boolean starred) {
    final ArrayList<ContentProviderOperation> operationList =
        new ArrayList<ContentProviderOperation>();
    ContentProviderOperation.Builder builder =
        ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI);
    builder.withValue(ContactsContract.RawContacts.STARRED, starred ? 1 : 0);
    operationList.add(builder.build());

    builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
    builder.withValueBackReference(StructuredName.RAW_CONTACT_ID, 0);
    builder.withValue(ContactsContract.Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
    builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
    operationList.add(builder.build());

    if (phone != null) {
      builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
      builder.withValueBackReference(Phone.RAW_CONTACT_ID, 0);
      builder.withValue(ContactsContract.Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
      builder.withValue(Phone.TYPE, Phone.TYPE_MOBILE);
      builder.withValue(Phone.NUMBER, phone);
      builder.withValue(ContactsContract.Data.IS_PRIMARY, 1);
      operationList.add(builder.build());
    }
    if (email != null) {
      builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
      builder.withValueBackReference(Email.RAW_CONTACT_ID, 0);
      builder.withValue(ContactsContract.Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
      builder.withValue(Email.TYPE, Email.TYPE_HOME);
      builder.withValue(Email.DATA, email);
      operationList.add(builder.build());
    }

    try {
      mContext.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);
    } catch (RemoteException e) {
      Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
    } catch (OperationApplicationException e) {
      Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
    }
  }
示例#9
0
 public static void mergeWithContact(Context c, long rawContactID, long contactID) {
   ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
   Set<Long> ids = getRawContacts(c, contactID, rawContactID);
   for (long id : ids) {
     ContentProviderOperation.Builder builder =
         ContentProviderOperation.newUpdate(ContactsContract.AggregationExceptions.CONTENT_URI);
     builder.withValue(ContactsContract.AggregationExceptions.RAW_CONTACT_ID1, rawContactID);
     builder.withValue(ContactsContract.AggregationExceptions.RAW_CONTACT_ID2, id);
     builder.withValue(
         ContactsContract.AggregationExceptions.TYPE,
         ContactsContract.AggregationExceptions.TYPE_KEEP_TOGETHER);
     operationList.add(builder.build());
   }
   if (operationList.size() > 0)
     try {
       c.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);
     } catch (RemoteException e) {
       Log.e("Error", e.getLocalizedMessage());
     } catch (OperationApplicationException e) {
       Log.e("Error", e.getLocalizedMessage());
     }
 }
 private Builder buildAssertHelper() {
   final boolean isContactInsert = mValues.isInsert();
   ContentProviderOperation.Builder builder = null;
   if (!isContactInsert) {
     // Assert version is consistent while persisting changes
     final Long beforeId = mValues.getId();
     final Long beforeVersion = mValues.getAsLong(RawContacts.VERSION);
     if (beforeId == null || beforeVersion == null) return builder;
     builder = ContentProviderOperation.newAssertQuery(mContactsQueryUri);
     builder.withSelection(RawContacts._ID + "=" + beforeId, null);
     builder.withValue(RawContacts.VERSION, beforeVersion);
   }
   return builder;
 }
 private static ContentProviderOperation updateEvent(
     long calendar_id, Account account, Event event, long raw_id) {
   ContentProviderOperation.Builder builder;
   if (raw_id != -1) {
     builder =
         ContentProviderOperation.newUpdate(
             Events.CONTENT_URI
                 .buildUpon()
                 .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
                 .appendQueryParameter(Calendars.ACCOUNT_NAME, account.name)
                 .appendQueryParameter(Calendars.ACCOUNT_TYPE, account.type)
                 .build());
     builder.withSelection(Events._ID + " = '" + raw_id + "'", null);
   } else {
     builder =
         ContentProviderOperation.newInsert(
             Events.CONTENT_URI
                 .buildUpon()
                 .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
                 .appendQueryParameter(Calendars.ACCOUNT_NAME, account.name)
                 .appendQueryParameter(Calendars.ACCOUNT_TYPE, account.type)
                 .build());
   }
   long dtstart = event.getStartDate().getTime();
   long dtend = dtstart + (1000 * 60 * 60);
   if (event.getEndDate() != null) dtend = event.getEndDate().getTime();
   builder.withValue(Events.CALENDAR_ID, calendar_id);
   builder.withValue(Events.DTSTART, dtstart);
   builder.withValue(Events.DTEND, dtend);
   builder.withValue(Events.TITLE, event.getTitle());
   builder.withValue(
       Events.EVENT_LOCATION,
       event.getVenue().getName()
           + "\n"
           + event.getVenue().getLocation().getCity()
           + "\n"
           + event.getVenue().getLocation().getCountry());
   if (Integer.valueOf(event.getStatus()) == 1)
     builder.withValue(Events.STATUS, Events.STATUS_TENTATIVE);
   else builder.withValue(Events.STATUS, Events.STATUS_CONFIRMED);
   builder.withValue(Events._SYNC_ID, Long.valueOf(event.getId()));
   return builder.build();
 }
  /** {@inheritDoc} */
  @Override
  public ArrayList<ContentProviderOperation> parse(XmlPullParser parser, ContentResolver resolver)
      throws XmlPullParserException, IOException {
    final ArrayList<ContentProviderOperation> batch = Lists.newArrayList();

    // Walk document, parsing any incoming entries
    int type;
    while ((type = parser.next()) != END_DOCUMENT) {
      if (type == START_TAG && ENTRY.equals(parser.getName())) {
        // Process single spreadsheet row at a time
        final SpreadsheetEntry entry = SpreadsheetEntry.fromParser(parser);

        final String speakerId = sanitizeId(entry.get(Columns.SPEAKER_TITLE), true);
        final Uri speakerUri = Speakers.buildSpeakerUri(speakerId);

        // Check for existing details, only update when changed
        final long localUpdated = queryItemUpdated(speakerUri, resolver);
        final long serverUpdated = entry.getUpdated();
        if (Log.isLoggable(TAG, Log.VERBOSE)) {
          Log.v(TAG, "found speaker " + entry.toString());
          Log.v(TAG, "found localUpdated=" + localUpdated + ", server=" + serverUpdated);
        }
        if (localUpdated >= serverUpdated) continue;

        // Clear any existing values for this speaker, treating the
        // incoming details as authoritative.
        batch.add(ContentProviderOperation.newDelete(speakerUri).build());

        final ContentProviderOperation.Builder builder =
            ContentProviderOperation.newInsert(Speakers.CONTENT_URI);

        builder.withValue(SyncColumns.UPDATED, serverUpdated);
        builder.withValue(Speakers.SPEAKER_ID, speakerId);
        builder.withValue(Speakers.SPEAKER_NAME, entry.get(Columns.SPEAKER_TITLE));
        builder.withValue(Speakers.SPEAKER_IMAGE_URL, entry.get(Columns.SPEAKER_IMAGE_URL));
        builder.withValue(Speakers.SPEAKER_COMPANY, entry.get(Columns.SPEAKER_COMPANY));
        builder.withValue(Speakers.SPEAKER_ABSTRACT, entry.get(Columns.SPEAKER_ABSTRACT));
        builder.withValue(Speakers.SPEAKER_URL, entry.get(Columns.SPEAKER_URL));

        // Normal speaker details ready, write to provider
        batch.add(builder.build());
      }
    }

    return batch;
  }
示例#13
0
  private void buildVideo(boolean isInsert, Video video, ArrayList<ContentProviderOperation> list) {
    Uri allVideosUri =
        ScheduleContractHelper.setUriAsCalledFromSyncAdapter(ScheduleContract.Videos.CONTENT_URI);
    Uri thisVideoUri =
        ScheduleContractHelper.setUriAsCalledFromSyncAdapter(
            ScheduleContract.Videos.buildVideoUri(video.id));

    ContentProviderOperation.Builder builder;
    if (isInsert) {
      builder = ContentProviderOperation.newInsert(allVideosUri);
    } else {
      builder = ContentProviderOperation.newUpdate(thisVideoUri);
    }

    if (TextUtils.isEmpty(video.vid)) {
      LOGW(TAG, "Ignoring video with missing video ID.");
      return;
    }

    String thumbUrl = video.thumbnailUrl;
    if (TextUtils.isEmpty(thumbUrl)) {
      // Oops, missing thumbnail URL. Let's improvise.
      // NOTE: this method of obtaining a thumbnail URL from the video ID
      // is unofficial and might not work in the future; that's why we use
      // it only as a fallback in case we don't get a thumbnail URL in the incoming data.
      thumbUrl = String.format(Locale.US, Config.VIDEO_LIBRARY_FALLBACK_THUMB_URL_FMT, video.vid);
      LOGW(TAG, "Video with missing thumbnail URL: " + video.vid + ". Using fallback: " + thumbUrl);
    }

    list.add(
        builder
            .withValue(ScheduleContract.Videos.VIDEO_ID, video.id)
            .withValue(ScheduleContract.Videos.VIDEO_YEAR, video.year)
            .withValue(ScheduleContract.Videos.VIDEO_TITLE, video.title.trim())
            .withValue(ScheduleContract.Videos.VIDEO_DESC, video.desc)
            .withValue(ScheduleContract.Videos.VIDEO_VID, video.vid)
            .withValue(ScheduleContract.Videos.VIDEO_TOPIC, video.topic)
            .withValue(ScheduleContract.Videos.VIDEO_SPEAKERS, video.speakers)
            .withValue(ScheduleContract.Videos.VIDEO_THUMBNAIL_URL, thumbUrl)
            .withValue(ScheduleContract.Videos.VIDEO_IMPORT_HASHCODE, video.getImportHashcode())
            .build());
  }
  private static long getCalendar(Account account) {
    // Find the Last.fm calendar if we've got one
    Uri calenderUri =
        Calendars.CONTENT_URI
            .buildUpon()
            .appendQueryParameter(Calendars.ACCOUNT_NAME, account.name)
            .appendQueryParameter(Calendars.ACCOUNT_TYPE, account.type)
            .build();
    Cursor c1 =
        mContentResolver.query(calenderUri, new String[] {BaseColumns._ID}, null, null, null);
    if (c1.moveToNext()) {
      return c1.getLong(0);
    } else {
      ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();

      ContentProviderOperation.Builder builder =
          ContentProviderOperation.newInsert(
              Calendars.CONTENT_URI
                  .buildUpon()
                  .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
                  .appendQueryParameter(Calendars.ACCOUNT_NAME, account.name)
                  .appendQueryParameter(Calendars.ACCOUNT_TYPE, account.type)
                  .build());
      builder.withValue(Calendars.ACCOUNT_NAME, account.name);
      builder.withValue(Calendars.ACCOUNT_TYPE, account.type);
      builder.withValue(Calendars.NAME, "Last.fm Events");
      builder.withValue(Calendars.CALENDAR_DISPLAY_NAME, "Last.fm Events");
      builder.withValue(Calendars.CALENDAR_COLOR, 0xD51007);
      builder.withValue(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_RESPOND);
      builder.withValue(Calendars.OWNER_ACCOUNT, account.name);
      builder.withValue(Calendars.SYNC_EVENTS, 1);
      operationList.add(builder.build());
      try {
        mContentResolver.applyBatch(CalendarContract.AUTHORITY, operationList);
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return -1;
      }
      return getCalendar(account);
    }
  }
示例#15
0
  public static void updateContactPhoto(
      ContentResolver c, long rawContactId, Photo pic, boolean primary) {
    ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();

    // insert new picture
    try {
      if (pic.data != null) {
        // delete old picture
        String where =
            ContactsContract.Data.RAW_CONTACT_ID
                + " = '"
                + rawContactId
                + "' AND "
                + ContactsContract.Data.MIMETYPE
                + " = '"
                + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE
                + "'";
        Log.i(TAG, "Deleting picture: " + where);

        ContentProviderOperation.Builder builder =
            ContentProviderOperation.newDelete(ContactsContract.Data.CONTENT_URI);
        builder.withSelection(where, null);
        operationList.add(builder.build());
        builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
        builder.withValue(ContactsContract.CommonDataKinds.Photo.RAW_CONTACT_ID, rawContactId);
        builder.withValue(
            ContactsContract.Data.MIMETYPE,
            ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
        builder.withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, pic.data);
        builder.withValue(ContactsContract.Data.SYNC2, String.valueOf(pic.timestamp));
        builder.withValue(ContactsContract.Data.SYNC3, pic.url);
        if (primary) builder.withValue(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
        operationList.add(builder.build());
      }
      c.applyBatch(ContactsContract.AUTHORITY, operationList);

    } catch (Exception e) {
      // TODO Auto-generated catch block
      Log.e("ERROR:", e.toString());
    }
  }
示例#16
0
  /**
   * Inserts postal data into the builder object. Note that the data structure of ContactsContract
   * is different from that defined in vCard. So some conversion may be performed in this method.
   * See also { {@link #getVCardPostalElements(ContentValues)}
   */
  public static void insertStructuredPostalDataUsingContactsStruct(
      int vcardType,
      final ContentProviderOperation.Builder builder,
      final ContactStruct.PostalData postalData) {
    builder.withValueBackReference(StructuredPostal.RAW_CONTACT_ID, 0);
    builder.withValue(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);

    builder.withValue(StructuredPostal.TYPE, postalData.type);
    if (postalData.type == StructuredPostal.TYPE_CUSTOM) {
      builder.withValue(StructuredPostal.LABEL, postalData.label);
    }

    builder.withValue(StructuredPostal.POBOX, postalData.pobox);
    // Extended address is dropped since there's no relevant entry in
    // ContactsContract.
    builder.withValue(StructuredPostal.STREET, postalData.street);
    builder.withValue(StructuredPostal.CITY, postalData.localty);
    builder.withValue(StructuredPostal.REGION, postalData.region);
    builder.withValue(StructuredPostal.POSTCODE, postalData.postalCode);
    builder.withValue(StructuredPostal.COUNTRY, postalData.country);

    builder.withValue(
        StructuredPostal.FORMATTED_ADDRESS, postalData.getFormattedAddress(vcardType));
    if (postalData.isPrimary) {
      builder.withValue(Data.IS_PRIMARY, 1);
    }
  }
示例#17
0
  private static void importOneSimContact(
      final Cursor cursor, final ContentResolver resolver, Account account) {
    final NamePhoneTypePair namePhoneTypePair =
        new NamePhoneTypePair(
            cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
    final String name = namePhoneTypePair.name;
    final int phoneType = namePhoneTypePair.phoneType;
    final String phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DATA1));
    final String emailAddresses = null;
    final String[] emailAddressArray;

    if (!TextUtils.isEmpty(emailAddresses)) {
      emailAddressArray = emailAddresses.split(",");
    } else {
      emailAddressArray = null;
    }

    final ArrayList<ContentProviderOperation> operationList =
        new ArrayList<ContentProviderOperation>();
    ContentProviderOperation.Builder builder =
        ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
    if (account != null) {
      builder.withValue(RawContacts.ACCOUNT_NAME, account.name);
      builder.withValue(RawContacts.ACCOUNT_TYPE, account.type);
    } else {
      builder.withValues(sEmptyContentValues);
    }
    operationList.add(builder.build());

    builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
    builder.withValueBackReference(StructuredName.RAW_CONTACT_ID, 0);
    builder.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
    builder.withValue(StructuredName.DISPLAY_NAME, name);
    operationList.add(builder.build());

    builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
    builder.withValueBackReference(Phone.RAW_CONTACT_ID, 0);
    builder.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
    builder.withValue(Phone.TYPE, phoneType);
    builder.withValue(Phone.NUMBER, phoneNumber);
    builder.withValue(Data.IS_PRIMARY, 1);
    operationList.add(builder.build());

    if (emailAddresses != null) {
      for (String emailAddress : emailAddressArray) {
        builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
        builder.withValueBackReference(Email.RAW_CONTACT_ID, 0);
        builder.withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
        builder.withValue(Email.TYPE, Email.TYPE_MOBILE);
        builder.withValue(Email.DATA, emailAddress);
        operationList.add(builder.build());
      }
    }

    try {
      resolver.applyBatch(ContactsContract.AUTHORITY, operationList);
    } catch (RemoteException e) {
      Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
    } catch (OperationApplicationException e) {
      Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage()));
    }
  }
示例#18
0
 private static void a(Account paramAccount, ArrayList<zq> paramArrayList)
 {
   boolean bool = b;
   ArrayList localArrayList1 = new ArrayList();
   StringBuilder localStringBuilder = new StringBuilder();
   ArrayList localArrayList2 = new ArrayList();
   Iterator localIterator = paramArrayList.iterator();
   int k;
   for (int i = 0; ; i = k)
     while (true)
     {
       zq localzq;
       if (localIterator.hasNext())
       {
         localzq = (zq)localIterator.next();
         if (4 + localArrayList1.size() < a);
       }
       try
       {
         App.ib.applyBatch(z[5], localArrayList1);
         localArrayList1.clear();
         if (i > 0);
         localStringBuilder.delete(0, localStringBuilder.length());
         if (localzq.b.indexOf("@") <= 0)
         {
           localArrayList2.add(localzq);
           if (!bool);
         }
         else
         {
           int j = localArrayList1.size();
           localStringBuilder.append(localzq).append(z[9]);
           ContentProviderOperation.Builder localBuilder1 = ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI);
           localBuilder1.withValue(z[4], paramAccount.name);
           localBuilder1.withValue(z[10], paramAccount.type);
           localBuilder1.withValue(z[13], localzq.b);
           localArrayList1.add(localBuilder1.build());
           ContentProviderOperation.Builder localBuilder2 = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
           localBuilder2.withValueBackReference(z[6], j);
           localBuilder2.withValue(z[11], z[8]);
           localBuilder2.withValue(z[0], localzq.h);
           localArrayList1.add(localBuilder2.build());
           ContentProviderOperation.Builder localBuilder3 = ContentProviderOperation.newInsert(a(ContactsContract.Data.CONTENT_URI));
           localBuilder3.withValueBackReference(z[6], j);
           localBuilder3.withValue(z[11], z[2]);
           localBuilder3.withValue(z[0], localzq.b);
           localBuilder3.withValue(z[12], App.Mb.getString(2131296836));
           localBuilder3.withValue(z[1], "+" + localzq.b.substring(0, localzq.b.indexOf("@")));
           localArrayList1.add(localBuilder3.build());
           if (Build.VERSION.SDK_INT >= 14)
           {
             ContentProviderOperation.Builder localBuilder4 = ContentProviderOperation.newUpdate(ContactsContract.AggregationExceptions.CONTENT_URI);
             localBuilder4.withValue(z[26], Long.valueOf(localzq.a()));
             localBuilder4.withValueBackReference(z[28], j);
             localBuilder4.withValue(z[24], Integer.valueOf(1));
             localArrayList1.add(localBuilder4.build());
           }
           k = i + 1;
           if (!bool)
             break;
         }
       }
       catch (Exception localException2)
       {
         try
         {
           while (true)
           {
             if (!localArrayList1.isEmpty())
             {
               App.ib.applyBatch(z[5], localArrayList1);
               localArrayList1.clear();
             }
             localStringBuilder.delete(0, localStringBuilder.length());
             return;
             localException2 = localException2;
             g5.d(z[25] + i + "/" + localException2.toString());
           }
         }
         catch (Exception localException1)
         {
           while (true)
           {
             g5.d(z[27] + localException1.toString());
             App.w.a(localArrayList2);
           }
         }
         finally
         {
           App.w.a(localArrayList2);
         }
       }
     }
 }
示例#19
0
  private static void addContact(Context context, Account account, JuickUser user) {
    //     Log.i(TAG, "Adding contact: " + name);
    ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();

    // Create our RawContact
    ContentProviderOperation.Builder builder =
        ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
    builder.withValue(RawContacts.ACCOUNT_NAME, account.name);
    builder.withValue(RawContacts.ACCOUNT_TYPE, account.type);
    builder.withValue(RawContacts.SYNC1, user.UName);
    operationList.add(builder.build());

    // Nickname
    builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
    builder.withValueBackReference(ContactsContract.CommonDataKinds.Nickname.RAW_CONTACT_ID, 0);
    builder.withValue(
        ContactsContract.Data.MIMETYPE,
        ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE);
    builder.withValue(ContactsContract.CommonDataKinds.Nickname.NAME, user.UName);
    operationList.add(builder.build());

    // StructuredName
    if (user.FullName != null) {
      builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
      builder.withValueBackReference(
          ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID, 0);
      builder.withValue(
          ContactsContract.Data.MIMETYPE,
          ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
      builder.withValue(
          ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, user.FullName);
      operationList.add(builder.build());
    }

    // Photo
    Bitmap photo = Utils.downloadImage("http://i.juick.com/a/" + user.UID + ".png");
    if (photo != null) {
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      photo.compress(Bitmap.CompressFormat.PNG, 100, baos);
      builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
      builder.withValueBackReference(ContactsContract.CommonDataKinds.Photo.RAW_CONTACT_ID, 0);
      builder.withValue(
          ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
      builder.withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, baos.toByteArray());
      operationList.add(builder.build());
    }

    // link to profile
    builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
    builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
    builder.withValue(
        ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/vnd.com.juick.profile");
    builder.withValue(ContactsContract.Data.DATA1, user.UID);
    builder.withValue(ContactsContract.Data.DATA2, user.UName);
    builder.withValue(ContactsContract.Data.DATA3, context.getString(R.string.Juick_profile));
    builder.withValue(ContactsContract.Data.DATA4, user.UName);
    operationList.add(builder.build());

    try {
      mContentResolver.applyBatch(ContactsContract.AUTHORITY, operationList);
    } catch (Exception e) {
      //      Log.e(TAG, "Something went wrong during creation! " + e);
      e.printStackTrace();
    }
  }
  private static void parseSession(
      XmlPullParser parser, ArrayList<ContentProviderOperation> batch, ContentResolver resolver)
      throws XmlPullParserException, IOException {
    final int depth = parser.getDepth();
    ContentProviderOperation.Builder builder =
        ContentProviderOperation.newInsert(Sessions.CONTENT_URI);
    builder.withValue(Sessions.UPDATED, 0);

    long startTime = -1;
    long endTime = -1;
    String title = null;
    String sessionId = null;
    String trackId = null;

    String tag = null;
    int type;
    while (((type = parser.next()) != END_TAG || parser.getDepth() > depth)
        && type != END_DOCUMENT) {
      if (type == START_TAG) {
        tag = parser.getName();
      } else if (type == END_TAG) {
        tag = null;
      } else if (type == TEXT) {
        final String text = parser.getText();
        if (Tags.START.equals(tag)) {
          startTime = ParserUtils.parseTime(text);
        } else if (Tags.END.equals(tag)) {
          endTime = ParserUtils.parseTime(text);
        } else if (Tags.ROOM.equals(tag)) {
          final String roomId = Rooms.generateRoomId(text);
          builder.withValue(Sessions.ROOM_ID, roomId);
        } else if (Tags.TRACK.equals(tag)) {
          trackId = Tracks.generateTrackId(text);
        } else if (Tags.ID.equals(tag)) {
          sessionId = text;
        } else if (Tags.TITLE.equals(tag)) {
          title = text;
        } else if (Tags.ABSTRACT.equals(tag)) {
          builder.withValue(Sessions.SESSION_ABSTRACT, text);
        }
      }
    }

    if (sessionId == null) {
      sessionId = Sessions.generateSessionId(title);
    }

    builder.withValue(Sessions.SESSION_ID, sessionId);
    builder.withValue(Sessions.SESSION_TITLE, title);

    // Use empty strings to make sure SQLite search trigger has valid data
    // for updating search index.
    builder.withValue(Sessions.SESSION_ABSTRACT, "");
    builder.withValue(Sessions.SESSION_REQUIREMENTS, "");
    builder.withValue(Sessions.SESSION_KEYWORDS, "");

    final String blockId = ParserUtils.findBlock(title, startTime, endTime);
    builder.withValue(Sessions.BLOCK_ID, blockId);

    // Propagate any existing starred value
    final Uri sessionUri = Sessions.buildSessionUri(sessionId);
    final int starred = querySessionStarred(sessionUri, resolver);
    if (starred != -1) {
      builder.withValue(Sessions.SESSION_STARRED, starred);
    }

    batch.add(builder.build());

    if (trackId != null) {
      // TODO: support parsing multiple tracks per session
      final Uri sessionTracks = Sessions.buildTracksDirUri(sessionId);
      batch.add(
          ContentProviderOperation.newInsert(sessionTracks)
              .withValue(SessionsTracks.SESSION_ID, sessionId)
              .withValue(SessionsTracks.TRACK_ID, trackId)
              .build());
    }
  }
示例#21
0
 private static ContentProviderOperation.Builder referenceRawContact(
     ContentProviderOperation.Builder builder, long rawContactId) {
   return rawContactId == -1
       ? builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
       : builder.withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
 }
  private static ContentProviderOperation updateEvent(
      long calendar_id, Account account, Event event, long raw_id) {
    ContentProviderOperation.Builder builder;
    if (raw_id != -1) {
      builder =
          ContentProviderOperation.newUpdate(
              Events.CONTENT_URI
                  .buildUpon()
                  .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
                  .appendQueryParameter(Calendars.ACCOUNT_NAME, account.name)
                  .appendQueryParameter(Calendars.ACCOUNT_TYPE, account.type)
                  .build());
      builder.withSelection(Events._ID + " = '" + raw_id + "'", null);
    } else {
      builder =
          ContentProviderOperation.newInsert(
              Events.CONTENT_URI
                  .buildUpon()
                  .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
                  .appendQueryParameter(Calendars.ACCOUNT_NAME, account.name)
                  .appendQueryParameter(Calendars.ACCOUNT_TYPE, account.type)
                  .build());
    }
    long dtstart = event.getStartDate().getTime();
    long dtend = dtstart + (1000 * 60 * 60);
    if (event.getEndDate() != null) dtend = event.getEndDate().getTime();
    builder.withValue(Events.CALENDAR_ID, calendar_id);
    builder.withValue(Events.DTSTART, dtstart);
    builder.withValue(Events.DTEND, dtend);
    builder.withValue(Events.TITLE, event.getTitle());

    String location = "";
    if (event.getVenue().getName().length() > 0) location += event.getVenue().getName() + "\n";
    if (event.getVenue().getLocation().getCity().length() > 0)
      location += event.getVenue().getLocation().getCity() + "\n";
    if (event.getVenue().getLocation().getCountry().length() > 0)
      location += event.getVenue().getLocation().getCountry() + "\n";

    builder.withValue(Events.EVENT_LOCATION, location);

    String description = "http://www.last.fm/event/" + event.getId() + "\n\n";

    if (event.getArtists().length > 0) {
      description += "LINEUP\n";
      for (String artist : event.getArtists()) {
        description += artist + "\n";
      }
      description += "\n";
    }

    if (event.getDescription() != null && event.getDescription().length() > 0) {
      description += "MORE DETAILS\n";
      description += event.getDescription();
    }

    builder.withValue(Events.DESCRIPTION, description);

    if (Integer.valueOf(event.getStatus()) == 1)
      builder.withValue(Events.STATUS, Events.STATUS_TENTATIVE);
    else builder.withValue(Events.STATUS, Events.STATUS_CONFIRMED);
    builder.withValue(Events._SYNC_ID, Long.valueOf(event.getId()));
    return builder.build();
  }