Delete blocked numbers¶
This library provides the BlockedNumbersDelete
API that allows you to delete existing
BlockedNumbers.
An instance of the BlockedNumbersDelete
API is obtained by,
Note that blocked number deletions will only work for privileged apps. For more info, read about Blocked numbers.
A basic delete¶
To delete a set of existing blocked numbers,
val deleteResult = delete
.blockedNumbers()
.delete()
.blockedNumbers(existingBlockedNumbers)
.commit()
An advanced delete¶
You may specify a matching criteria, like in queries, that will delete all matching blocked numbers,
Executing the delete¶
To execute the delete,
If you want to delete all given blockedNumbers in a single atomic transaction,
The call to commitInOneTransaction
will only succeed if ALL given blocked numbers are successfully
deleted. If one delete fails, the entire operation will fail and everything will be reverted prior
to the delete operation. In contrast, commit
allows for some deletes to succeed and some to fail.
Handling the delete result¶
The commit
and commitInOneTransaction
functions returns a Result
,
To check if all deletes succeeded,
To check if a particular delete succeeded,
val deleteSuccessful = deleteResult.isSuccessful(blockedNumber)
val deleteSuccessful = deleteResult.isSuccessful(blockedNumber.id)
To check if a particular advanced delete managed to delete at least one matching blocked number,
val where = BlockedNumbersFields.Number contains "555"
val deleteResult = delete.groupsWhere(where).commit()
val advancedDeleteSuccessful = deleteResult.isSuccessful(where)
Performing the delete and result processing asynchronously¶
Deletes are executed when the commit
or commitInOneTransaction
function is invoked. The work is
done in the same thread as the call-site. This may result in a choppy UI.
To perform the work in a different thread, use the Kotlin coroutine extensions provided in the async
module.
For more info, read Execute work outside of the UI thread using coroutines.
You may, of course, use other multi-threading libraries or just do it yourself =)
ℹ️ Extensions for Kotlin Flow and RxJava are also in the project roadmap.
Performing the delete with permission¶
There are no permissions required for blocked numbers. However, there are privileges that must be acquired. For more info, read about Blocked numbers.