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;
});
}
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);
});
}
Aggregations