Search in sources :

Example 11 with Selection

use of com.android.dialer.common.database.Selection in project android_packages_apps_Dialer by LineageOS.

the class Blocking method unblock.

/**
 * Unblock a list of number.
 *
 * @param countryIso the current location used to guess the country code of the number if not
 *     available. If {@code null} and {@code number} does not have a country code, only the
 *     original number will be unblocked.
 * @throws BlockingFailedException in the returned future if the operation failed.
 */
public static ListenableFuture<Void> unblock(Context context, ImmutableCollection<String> numbers, @Nullable String countryIso) {
    return DialerExecutorComponent.get(context).backgroundExecutor().submit(() -> {
        ArrayList<ContentProviderOperation> operations = new ArrayList<>();
        for (String number : numbers) {
            Selection selection = Selection.column(BlockedNumbers.COLUMN_ORIGINAL_NUMBER).is("=", number);
            String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
            if (e164Number != null) {
                selection = selection.buildUpon().or(Selection.column(BlockedNumbers.COLUMN_E164_NUMBER).is("=", e164Number)).build();
            }
            operations.add(ContentProviderOperation.newDelete(BlockedNumbers.CONTENT_URI).withSelection(selection.getSelection(), selection.getSelectionArgs()).build());
        }
        applyBatchOps(context.getContentResolver(), operations);
        return null;
    });
}
Also used : ContentProviderOperation(android.content.ContentProviderOperation) Selection(com.android.dialer.common.database.Selection) ArrayList(java.util.ArrayList)

Example 12 with Selection

use of com.android.dialer.common.database.Selection in project android_packages_apps_Dialer by LineageOS.

the class Blocking method isBlocked.

/**
 * Get blocked numbers from a list of number.
 *
 * @param countryIso the current location used to guess the country code of the number if not
 *     available. If {@code null} and {@code number} does not have a country code, only the
 *     original number will be used to check blocked status.
 * @throws BlockingFailedException in the returned future if the operation failed.
 */
public static ListenableFuture<ImmutableMap<String, Boolean>> isBlocked(Context context, ImmutableCollection<String> numbers, @Nullable String countryIso) {
    return DialerExecutorComponent.get(context).backgroundExecutor().submit(() -> {
        Map<String, Boolean> blockedStatus = new ArrayMap<>();
        List<String> e164Numbers = new ArrayList<>();
        for (String number : numbers) {
            // Initialize as unblocked
            blockedStatus.put(number, false);
            String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
            if (e164Number != null) {
                e164Numbers.add(e164Number);
            }
        }
        Selection selection = Selection.builder().or(Selection.column(BlockedNumbers.COLUMN_ORIGINAL_NUMBER).in(numbers)).or(Selection.column(BlockedNumbers.COLUMN_E164_NUMBER).in(e164Numbers)).build();
        try (Cursor cursor = context.getContentResolver().query(BlockedNumbers.CONTENT_URI, new String[] { BlockedNumbers.COLUMN_ORIGINAL_NUMBER }, selection.getSelection(), selection.getSelectionArgs(), null)) {
            if (cursor == null) {
                return ImmutableMap.copyOf(blockedStatus);
            }
            while (cursor.moveToNext()) {
                // Update blocked status
                blockedStatus.put(cursor.getString(0), true);
            }
        }
        return ImmutableMap.copyOf(blockedStatus);
    });
}
Also used : Selection(com.android.dialer.common.database.Selection) ArrayList(java.util.ArrayList) ArrayMap(android.util.ArrayMap) Cursor(android.database.Cursor)

Aggregations

Selection (com.android.dialer.common.database.Selection)12 Cursor (android.database.Cursor)9 ArrayList (java.util.ArrayList)5 WorkerThread (android.support.annotation.WorkerThread)4 ArraySet (android.util.ArraySet)3 ArrayMap (android.util.ArrayMap)2 PhoneLookupInfo (com.android.dialer.phonelookup.PhoneLookupInfo)2 InvalidProtocolBufferException (com.google.protobuf.InvalidProtocolBufferException)2 SuppressLint (android.annotation.SuppressLint)1 ContentProviderOperation (android.content.ContentProviderOperation)1 ContentValues (android.content.ContentValues)1 Uri (android.net.Uri)1 DialerPhoneNumber (com.android.dialer.DialerPhoneNumber)1 SystemBlockedNumberInfo (com.android.dialer.phonelookup.PhoneLookupInfo.SystemBlockedNumberInfo)1 PartitionedNumbers (com.android.dialer.phonenumberproto.PartitionedNumbers)1 SpeedDialEntry (com.android.dialer.speeddial.database.SpeedDialEntry)1 Channel (com.android.dialer.speeddial.database.SpeedDialEntry.Channel)1 ImmutableMap (com.google.common.collect.ImmutableMap)1 ImmutableSet (com.google.common.collect.ImmutableSet)1