3. Mục Tiêu Buổi Học
03 Cách nhận tin nhắn SMS đến
01 Cách gửi SMS theo chương trình từ bên trong
ứng dụng của bạn
04 Cách gửi Email từ ứng dụng của bạn
02 Cách gửi tin nhắn SMS bằng ứng dụng tin nhắn
tích hợp
4. Gửi tin nhắn theo
chương trình
Nhận tin nhắn SMS
Cập nhật hoạt động từ
BroadcastReceiver
Gọi một hoạt động từ
BroadcastReceiver
Gửi tin nhắn bằng Intent
TIN NHẮN SMS
Ngăn các ứng dụng nhắn
tin tích hợp
5. Tin nhắn SMS là một trong những chức năng chính trên điện thoại di động ngày nay—
đối với một số người dùng, nó cần thiết như chính thiết bị. Ngày nay, bất kỳ điện thoại
di động nào bạn mua sẽ có khả năng nhắn tin SMS và gần như tất cả người dùng ở
mọi lứa tuổi đều biết cách gửi và nhận những tin nhắn như vậy. Android đi kèm với
một ứng dụng SMS cài sẵn cho phép bạn gửi và nhận tin nhắn SMS
Ví dụ: bạn có thể muốn viết một
ứng dụng tự động gửi tin nhắn SMS
theo các khoảng thời gian đều đặn
Tin nhắn SMS
Tuy nhiên, trong một số trường
hợp, bạn có thể muốn tích hợp
khả năng SMS vào ứng dụng
Android của mình.
6. Gửi SMS theo chương trình
Gửi SMS theo chương trình là tính
năng cho phép ứng dụng Android gửi
tin nhắn văn bản tới một số điện thoại
đích mà người dùng muốn thông qua
chương trình mà ứng dụng cung cấp.
7. Bước 3 Thêm câu lệnh sau vào tệp AndroidManifest.xml
Bước 1 Tạo Project mới
Bước 2 Tạo một Linner Layout gồm Button trong
activity_main.xml.
Bước 4 Thêm những câu lệnh sau vào MainActivity.java
8. Bước 2 Tạo một Linner Layout gồm Button trong
activity_main.xml.
9. Bước 3 Thêm câu lệnh sau vào tệp AndroidManifest.xml
Dòng mã này khai báo một quyền trong
hệ thống Android,
"android.permission.SEND_SMS".
Khi ứng dụng của bạn sử dụng lệnh này,
nó sẽ được phép gửi tin nhắn SMS từ
thiết bị Android của người dùng.
10. Bước 4 Thêm những câu lệnh sau vào MainActivity.java
11. Những phương thức được sử dụng ở trên.
getDefault(): để lấy đối tượng SMSmanager, được sử dụng
để gửi và nhận tin nhắn
sendTextMessage(): để gửi tin nhắn SMS
5 đối số gồm:
+ detinationAddress-số điện thoại người nhận
+ scAddress-địa chỉ trung tâm dịch vụ; sử dụng null SMSC
mặc định
+ Text-nội dung tin nhắn
+ sentIntent— Ý định đang chờ xử lý để gọi khi tin nhắn được
gửi
+ deliveryIntent— Ý định đang chờ để gọi khi tin nhắn đã được
gửi
13. Gửi SMS theo Intent
Lớp itent kiểu MIME
"vnd.android-dir/mms-sms"
Có thể gửi SMS cho nhiều người
trong phương thức putExtra()
Sử dụng lớp SmsManager , bạn có thể gửi tin nhắn SMS từ bên trong ứng dụng của mình mà không
cần liên quan đến ứng dụng Nhắn tin tích hợp sẵn. Tuy nhiên, đôi khi sẽ dễ dàng hơn nếu bạn chỉ
cần gọi ứng dụng Nhắn tin tích hợp sẵn và để ứng dụng này xử lý việc gửi tin nhắn.
Để kích hoạt ứng dụng nhắn
tin tích hợp từ bên trong ứng
dụng của bạn cần sử dụng
14. Nhận tin nhắn
Android nhận và
xử lý tin nhắn
trong ứng dụng
của mình thay vì
ứng dụng nhắn
tin khác thông
qua chương
trình ứng dụng
Ứng dụng cần đăng
ký một
BroadcastReceiver
để theo dõi tin nhắn
BroadcastReceiver
sẽ nhận thông báo
từ Android khi tin
nhắn đến
01 02 03
15. Thêm các câu lệnh vào tệp AndroidManifest.xml
Yêu cầu quyền truy cập để nhận tin nhắn
SMS (Short Message Service) trên thiết bị
Android.
Ứng dụng của bạn có dòng code này trong
tệp AndroidManifest.xml, khi người dùng
cài đặt ứng dụng và cho phép quyền truy cập
tin nhắn
Ứng dụng sẽ có thể đăng ký lắng nghe các
sự kiện SMS đến và thực hiện các hành động
liên quan đến chúng, ví dụ như phân tích và
xử lý nội dung tin nhắn.
18. onReceive()
Phương thức này được gọi
khi một Intent được gửi tới
BroadcastReceiver.
Ví dụ như nhận được cuộc
gọi đến, tin nhắn.
sendBroadcast()
Phương thức này được sử
dụng để gửi một Intent tới
tất cả các BroadcastReceiver
đã đăng ký với IntentFilter
tương ứng.
getMessageBody()
Là một phương thức
trong lớp SmsMessage
của Android. Phương
thức này được sử dụng
để lấy nội dung của tin
nhắn SMS.
getOriginatingAdd
ress()
Phương thức này được sử
dụng để lấy địa chỉ điện
thoại của người gửi tin
nhắn SMS.
getMessagesFrom
Intent()
Phương thức này có tác
dụng lấy các tin nhắn SMS
từ Intent được gửi tới
BroadcastReceiver để xử lí.
19. Prevent the Messaging Application
from Receiving a Message
Trong phần trước, bạn có thể nhận thấy rằng mỗi
khi bạn gửi tin nhắn SMS đến trình mô phỏng (hoặc
thiết bị), cả ứng dụng của bạn đều nhận được tin
nhắn đó. Điều này là do khi nhận được tin nhắn
SMS, tất cả các ứng dụng (bao gồm cả ứng dụng
Nhắn tin) trên thiết bị Android sẽ thay phiên nhau xử
lý tin nhắn đến.
Tuy nhiên, đôi khi, đây không phải là điều bạn
muốn. Ví dụ: bạn có thể muốn ứng dụng của mình
nhận được tin nhắn và ngăn không cho nó được
gửi đến các ứng dụng khác.
20. B1: Trong file AndroidManifest.xml thêm thuộc
tính android:priority vào như sau:
Code của receive SMS
Prevent the Messaging Application from Receiving a Message
Code receive SMS sau khi thêm
thuộc tính
21. B2: Trong file SMSReceiver.java thêm
phương thức abortBroadcast()
Prevent the Messaging Application from Receiving a Message
22. Updating an Activity from a
BroadcastReceiver
Phần trước trình bày cách, bạn có thể sử dụng lớp
BroadcastReceiver để nhận tin nhắn SMS đến và sau
đó sử dụng lớp Toast để hiển thị tin nhắn SMS đã
nhận. Thông thường, bạn sẽ muốn gửi tin nhắn SMS
trở lại hoạt động chính của ứng dụng của mình.
Ví dụ: Bạn có thể muốn hiển thị thông báo trong
TextView.
B1: Sử dụng cùng project SMS trước đó. Tạo một
TextView trong activity_main.xml
23. B2. Thêm các dòng lệnh vào tệp SMSReceiver.java
Updating an Activity from a BroadcastReceiver
24. B3: Thêm các dòng lệnh vào têp MainActivity.java
Updating an Activity from a BroadcastReceiver
onResume():
Một phương thức trong Activity được gọi
khi Activity của bạn được hiển thị lên màn
hình và trở thành Activity chính hoặc
Activity đang hoạt động.
onPause():
Một phương thức trong Activity được gọi khi
Activity của bạn bị ẩn đi hoặc Activity khác
được hiển thị lên màn hình.
25. Các phương thức dùng trong
nhận tin nhắn
onPause():
Một phương thức trong Activity được gọi khi
Activity của bạn bị ẩn đi hoặc Activity khác
được hiển thị lên màn hình.
onResume():
Một phương thức trong Activity được gọi
khi Activity của bạn được hiển thị lên màn
hình và trở thành Activity chính hoặc
Activity đang hoạt động.
android:priority:
Thuộc tính được sử dụng để thiết lập độ ưu
tiên cho thông báo. Thuộc tính này là một số
nguyên được sử dụng để xác định mức độ
ưu tiên của thông báo
abortBroadcast():
Một phương thức được sử dụng trong
BroadcastReceiver để hủy bỏ thông báo và
ngăn chặn việc phát sóng thông báo đến các
BroadcastReceiver khác.
27. Email
Bạn phải định cấu hình ứng dụng Email trên
trình mô phỏng của mình và làm theo lời nhắc
trên màn hình để thiết lập ứng dụng.
Nếu không, bạn sẽ nhận được thông báo cho
biết rằng không có ứng dụng nào được định
cấu hình để xử lý mục đích Email.
Lưu ý
Gửi Email
Giống như tin nhắn SMS, Android cũng hỗ
trợ email. Bên cạnh việc gửi và nhận email
bằng ứng dụng Gmail/Email, bạn cũng có
thể gửi email theo chương trình từ bên trong
ứng dụng Android của mình.
28. Phương thức dùng trong Gửi Email
setType()
setData() putExtra()
Sử dụng phương thức
này để truyền địa chỉ
email của người nhận.
viết một ứng dụng tự
động gửi tin nhắn SMS
theo các khoảng thời
gian đều đặn
Đặt các thông tin bổ
sung cho một Intent.
Trong trường hợp gửi
email, bạn có thể sử
dụng phương thức
này để đặt tiêu đề và
nội dung cho email
Đặt kiểu dữ liệu cho
một Intent. Trường hợp
gửi Email bạn cần sử
dụng phương thức này
để chỉ định kiểu dữ liệu
là "message/rfc822",
đại diện cho emai
Khởi chạy ứng dụng
Email tích hợp sẵn để
gửi thư email.
Bạn sử dụng một đối
tượng Intent và đặt các
tham số khác nhau
bằng các phương thức