Query SMS
Requires READ_SMS
permission.
Add the following permission in your AndroidManifest.xml
<uses-permission android:name="android.permission.READ_SMS"/>
getInboxSms()
Returns Future<List<SmsMessage>>
Parameters
Type
Description
Optional
Default Value
Columns
List of SmsColumn
Columns to be returned by the query
✔️
[ SmsColumn.ID
, SmsColumn.ADDRESS
, SmsColumn.BODY
, SmsColumn.DATE
]
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)]
);
All parameters are optional.
List<SmsMessage> messages = await telephony.getInboxSms();
getSentSms()
Returns Future<List<SmsMessage>>
Parameters
Type
Description
Optional
Default Value
Columns
List of SmsColumn
Columns to be returned by the query
✔️
[ SmsColumn.ID
, SmsColumn.ADDRESS
, SmsColumn.BODY
, SmsColumn.DATE
]
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)]
);
All parameters are optional.
List<SmsMessage> messages = await telephony.getSentSms();
getDraftSms()
Returns Future<List<SmsMessage>>
Parameters
Type
Description
Optional
Default Value
Columns
List of SmsColumn
Columns to be returned by the query
✔️
[ SmsColumn.ID
, SmsColumn.ADDRESS
, SmsColumn.BODY
, SmsColumn.DATE
]
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)]
);
All parameters are optional.
List<SmsMessage> messages = await telephony.getDraftSms();
SmsMessage
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
SmsColumn
Columns
ID
ADDRESS
BODY
DATE
DATE_SENT
READ
SEEN
STATUS
SUBJECT
SUBSCRIPTION_ID
THREAD_ID
TYPE
SmsFilter
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.
Example
WHERE address = '123456789'
AND body LIKE 'falcon'
OR date > '232123432'
Becomes
SmsFilter.where(SmsColumn.ADDRESS)
.equals('123456789')
.and(SmsColumn.BODY)
.like('falcon')
.or(SmsColumn.DATE)
.greaterThan('232123432');
Initializing a filter
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);
Methods
equals()
Compares equality between the column values and the value provided to the function.
SmsFilter.where(SmsColumn.ID).equals('12');
greaterThan()
Adds a greater than >
operator.
SmsFilter.where(SmsColumn.ID).greaterThan('2');
lessThan()
Adds a less than operator.
SmsFilter.where(SmsColumn.ID).lessThan('40');
greaterThanOrEqualTo()
Adds a greater than or equal to operator.
SmsFilter.where(SmsColumn.ID).greaterThanOrEqualTo('6');
lessThanOrEqualTo()
Adds a less than or equal to operator.
SmsFilter.where(SmsColumn.ID).lessThanOrEqualTo('30');
notEqualTo()
Checks for inequality.
SmsFilter.where(SmsColumn.ID).notEqualTo('14');
like()
Adds the LIKE
operator.
SmsFilter.where(SmsColumn.BODY).like('%abc%');
inValues()
Adds the IN
operator.
SmsFilter.where(SmsColumn.ID).inValues(['13', '15', '20']);
between()
Adds the BETWEEN
operator.
SmsFilter.where(SmsColumn.ID).between('10','20');
not
Adds a NOT
operator.
SmsFilter.where(SmsColumn.BODY).not.like('%a%');
Combining Methods
and()
Adds the AND
operator between two statements.
SmsFilter.where(SmsColumn.ID)
.greaterThanOrEqualTo('6')
.and(SmsColumn.BODY)
.like('%abc%');
or()
Adds the OR
operator between two statements.
SmsFilter.where(SmsColumn.ID)
.greaterThan('10')
.or(SmsColumn.ID)
.lessThan('50');
OrderBy
Creates an ORDER BY
statement.
OrderBy(SmsColumn.ID);
Optionally you can provide a sort order. Defaults to DESC
OrderBy(SmsColumn.ID, sort: Sort.ASC);
Sort
Values
ASC
DESC
Last updated
Was this helpful?