Comment on page
Query SMS
Requires
READ_SMS
permission.Add the following permission in your
AndroidManifest.xml
<uses-permission android:name="android.permission.READ_SMS"/>
Parameters | Type | Description | Optional | Default Value |
Columns | Columns to be returned by the query | ✔️ | [ SmsColumn.ID , SmsColumn.ADDRESS , SmsColumn.BODY , SmsColumn.DATE ] | |
Filter | Filters the result by given constraints. Works like SQL WHERE clause. | ✔️ | null | |
sortOrder | Sorts the result prioritized by order of declaration. | ✔️ | null |
List<SmsMessage> messages = await telephony.getInboxSms(
columns: [SmsColumn.ADDRESS, SmsColumn.BODY],
filter: SmsFilter.where(SmsColumn.ADDRESS)
.equals("1234567890")
.and(SmsColumn.BODY)
.like("starwars"),
sortOrder: [OrderBy(SmsColumn.ADDRESS, sort: Sort.ASC),
OrderBy(SmsColumn.BODY)]
);
List<SmsMessage> messages = await telephony.getInboxSms();
Parameters | Type | Description | Optional | Default Value |
Columns | Columns to be returned by the query | ✔️ | [ SmsColumn.ID , SmsColumn.ADDRESS , SmsColumn.BODY , SmsColumn.DATE ] | |
Filter | Filters the result by given constraints. Works like SQL WHERE clause. | ✔️ | null | |
sortOrder | Sorts the result prioritized by order of declaration. | ✔️ | null |
List<SmsMessage> messages = await telephony.getSentSms(
columns: [SmsColumn.ADDRESS, SmsColumn.BODY],
filter: SmsFilter.where(SmsColumn.ADDRESS)
.equals("1234567890")
.and(SmsColumn.BODY)
.like("starwars"),
sortOrder: [OrderBy(SmsColumn.ADDRESS, sort: Sort.ASC),
OrderBy(SmsColumn.BODY)]
);
List<SmsMessage> messages = await telephony.getSentSms();
Parameters | Type | Description | Optional | Default Value |
Columns | Columns to be returned by the query | ✔️ | [ SmsColumn.ID , SmsColumn.ADDRESS , SmsColumn.BODY , SmsColumn.DATE ] | |
Filter | Filters the result by given constraints. Works like SQL WHERE clause. | ✔️ | null | |
sortOrder | Sorts the result prioritized by order of declaration. | ✔️ | null |
List<SmsMessage> messages = await telephony.getDraftSms(
columns: [SmsColumn.ADDRESS, SmsColumn.BODY],
filter: SmsFilter.where(SmsColumn.ADDRESS)
.equals("1234567890")
.and(SmsColumn.BODY)
.like("starwars"),
sortOrder: [OrderBy(SmsColumn.ADDRESS, sort: Sort.ASC),
OrderBy(SmsColumn.BODY)]
);
List<SmsMessage> messages = await telephony.getDraftSms();
Property | Type |
id | int |
address | String |
body | String |
date | int in milliseconds |
dateSent | int in milliseconds |
read | bool |
seen | bool |
subject | String |
subscriptionId | int |
threadId | int |
type | SmsType |
status | SmsStatus |
Columns |
ID |
ADDRESS |
BODY |
DATE |
DATE_SENT |
READ |
SEEN |
STATUS |
SUBJECT |
SUBSCRIPTION_ID |
THREAD_ID |
TYPE |
Generates a filter that will be used by an query. The methods read like an SQL query. The select part is determined
columns
parameter on one of the query methods. The SmsFilter
handle the WHERE
part.WHERE address = '123456789'
AND body LIKE 'falcon'
OR date > '232123432'
SmsFilter.where(SmsColumn.ADDRESS)
.equals('123456789')
.and(SmsColumn.BODY)
.like('falcon')
.or(SmsColumn.DATE)
.greaterThan('232123432');
Sms Filter works like a
SQL WHERE
clause. Initialize the filter by calling the where
method and pass in the column name.SmsFilter.where(SmsColumn.ID);
Compares equality between the column values and the value provided to the function.
SmsFilter.where(SmsColumn.ID).equals('12');
Adds a greater than
>
operator.SmsFilter.where(SmsColumn.ID).greaterThan('2');
Adds a less than operator.
SmsFilter.where(SmsColumn.ID).lessThan('40');
Adds a greater than or equal to operator.
SmsFilter.where(SmsColumn.ID).greaterThanOrEqualTo('6');
Adds a less than or equal to operator.
SmsFilter.where(SmsColumn.ID).lessThanOrEqualTo('30');
Checks for inequality.
SmsFilter.where(SmsColumn.ID).notEqualTo('14');
Adds the
LIKE
operator.SmsFilter.where(SmsColumn.BODY).like('%abc%');
Adds the
IN
operator.SmsFilter.where(SmsColumn.ID).inValues(['13', '15', '20']);
Adds the
BETWEEN
operator.SmsFilter.where(SmsColumn.ID).between('10','20');
Adds a
NOT
operator.SmsFilter.where(SmsColumn.BODY).not.like('%a%');
Adds the
AND
operator between two statements.SmsFilter.where(SmsColumn.ID)
.greaterThanOrEqualTo('6')
.and(SmsColumn.BODY)
.like('%abc%');
Adds the
OR
operator between two statements.SmsFilter.where(SmsColumn.ID)
.greaterThan('10')
.or(SmsColumn.ID)
.lessThan('50');
Creates an
ORDER BY
statement.OrderBy(SmsColumn.ID);
Optionally you can provide a sort order. Defaults to
DESC
OrderBy(SmsColumn.ID, sort: Sort.ASC);
Values |
ASC |
DESC |
Last modified 3yr ago