List of usage examples for android.content ContentProvider query
public abstract @Nullable Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder);
From source file:com.android.providers.contacts.ContactsSyncAdapter.java
protected static Cursor getCursorForTableImpl(ContentProvider cp, Class entryClass) { if (entryClass == ContactEntry.class) { return cp.query(People.CONTENT_URI, null, null, null, null); }//from w ww. j a v a2s. co m if (entryClass == GroupEntry.class) { return cp.query(Groups.CONTENT_URI, null, null, null, null); } throw new IllegalArgumentException("unexpected entry class, " + entryClass.getName()); }
From source file:com.android.providers.contacts.ContactsSyncAdapter.java
protected static Cursor getCursorForDeletedTableImpl(ContentProvider cp, Class entryClass) { if (entryClass == ContactEntry.class) { return cp.query(People.DELETED_CONTENT_URI, null, null, null, null); }// w ww .j a v a 2s. co m if (entryClass == GroupEntry.class) { return cp.query(Groups.DELETED_CONTENT_URI, null, null, null, null); } throw new IllegalArgumentException("unexpected entry class, " + entryClass.getName()); }
From source file:com.android.providers.contacts.ContactsSyncAdapter.java
protected void sendClientPhotos(SyncContext context, ContentProvider clientDiffs, Object syncInfo, SyncResult syncResult) {//from w w w . j av a2 s . c o m Entry entry = new MediaEntry(); GDataServiceClient client = getGDataServiceClient(); String authToken = getAuthToken(); ContentResolver cr = getContext().getContentResolver(); final String account = getAccount(); Cursor c = clientDiffs.query(Photos.CONTENT_URI, null /* all columns */, null /* no where */, null /* no where args */, null /* default sort order */); try { int personColumn = c.getColumnIndexOrThrow(Photos.PERSON_ID); int dataColumn = c.getColumnIndexOrThrow(Photos.DATA); int numRows = c.getCount(); while (c.moveToNext()) { if (mSyncCanceled) { if (Config.LOGD) Log.d(TAG, "stopping since the sync was canceled"); break; } entry.clear(); context.setStatusText("Updating, " + (numRows - 1) + " to go"); cursorToBaseEntry(entry, account, c); String editUrl = entry.getEditUri(); if (TextUtils.isEmpty(editUrl)) { if (Config.LOGD) { Log.d(TAG, "skipping photo edit for unsynced contact"); } continue; } // Send the request and receive the response InputStream inputStream = null; byte[] imageData = c.getBlob(dataColumn); if (imageData != null) { inputStream = new ByteArrayInputStream(imageData); } Uri photoUri = Uri.withAppendedPath(People.CONTENT_URI, c.getString(personColumn) + "/" + Photos.CONTENT_DIRECTORY); try { if (inputStream != null) { if (Log.isLoggable(TAG, Log.VERBOSE)) { Log.v(TAG, "Updating photo " + entry.toString()); } ++mPhotoUploads; client.updateMediaEntry(editUrl, inputStream, IMAGE_MIME_TYPE, authToken); } else { if (Log.isLoggable(TAG, Log.VERBOSE)) { Log.v(TAG, "Deleting photo " + entry.toString()); } client.deleteEntry(editUrl, authToken); } // Mark that this photo is no longer dirty. The next time we sync (which // should be soon), we will get the new version of the photo and whether // or not there is a new one to download (e.g. if we deleted our version // yet there is an evergreen version present). ContentValues values = new ContentValues(); values.put(Photos.EXISTS_ON_SERVER, inputStream == null ? 0 : 1); values.put(Photos._SYNC_DIRTY, 0); if (cr.update(photoUri, values, null /* no where */, null /* no where args */) != 1) { Log.e(TAG, "error updating photo " + photoUri + " with values " + values); syncResult.stats.numParseExceptions++; } else { syncResult.stats.numUpdates++; } continue; } catch (ParseException e) { Log.e(TAG, "parse error during update of " + ", skipping"); syncResult.stats.numParseExceptions++; } catch (IOException e) { if (Config.LOGD) { Log.d(TAG, "io error during update of " + entry.toString() + ", skipping"); } syncResult.stats.numIoExceptions++; } catch (HttpException e) { switch (e.getStatusCode()) { case HttpException.SC_UNAUTHORIZED: if (syncResult.stats.numAuthExceptions == 0) { if (Config.LOGD) { Log.d(TAG, "auth error during update of " + entry + ", skipping"); } } syncResult.stats.numAuthExceptions++; try { GoogleLoginServiceBlockingHelper.invalidateAuthToken(getContext(), authToken); } catch (GoogleLoginServiceNotFoundException e1) { if (Config.LOGD) { Log.d(TAG, "could not invalidate auth token", e1); } } return; case HttpException.SC_CONFLICT: if (Config.LOGD) { Log.d(TAG, "conflict detected during update of " + entry + ", skipping"); } syncResult.stats.numConflictDetectedExceptions++; break; case HttpException.SC_BAD_REQUEST: case HttpException.SC_FORBIDDEN: case HttpException.SC_NOT_FOUND: case HttpException.SC_INTERNAL_SERVER_ERROR: default: if (Config.LOGD) { Log.d(TAG, "error " + e.getMessage() + " during update of " + entry.toString() + ", skipping"); } syncResult.stats.numIoExceptions++; } } } } finally { c.close(); } }