Trong bài này chúng ta sẽ tìm hiểu cách gửi tin nhắn SMS. Về cơ bản thì có 2 cách để có thể gửi SMS là:
Chúng ta cần quyền
READ_PHONE_STATE
để có thể theo dõi trạng thái của điện thoại. Thêm nó vào AndroidManifest.xml:
1
| < uses-permission android:name = "android.permission.READ_PHONE_STATE" /> |
- Dùng lớp
SmsManager
- Dùng
Intent
Lớp
SmsManager
cho phép chúng ta thiết lập các thông số khác nhau và do đó chúng ta có thể gửi tin nhắn một cách linh hoạt theo ý chúng ta muốn. Còn cách sử dụng Intent
tức là chúng ta chỉ đơn giản là mở một ứng dụng SMS khác trong máy ra rồi để người dùng “tự xử” thôi. Trong bài này chúng ta sẽ sử dụng lớp SmsManager.
Chúng ta định nghĩa phương thức
sendSms()
tương ứng như đã khai báo với Button.
1
| SmsManager smsManager = SmsManager.getDefault(); |
Lớp
SmsManager
sẽ chịu trách nhiệm việc gửi tin nhắn. Chúng ta không tạo lớp này một cách trực tiếp mà gọi từ phương thức SmsManager.getDefault().
1
2
3
4
5
| smsManager.sendTextMessage(phoneNumber.getText().toString(), null , content.getText().toString(), null , null ); |
Để gửi tin nhắn thì chúng ta gọi phương thức
SmsManager.sendTextMessage().
Tham số đầu tiên là số điện thoại nhận. Tham số thứ 2 là chuỗi chỉ định địa chỉ của trung tâm tin nhắn (Short Message Service Center – SMSC), về cơ bản thì khi bạn gửi một tin nhắn đến một số điện thoại nào đó, tin nhắn của bạn phải được gửi về trung tâm này rồi trung tâm này sẽ gửi đến số điện thoại đích trong thẻ SIM của bạn, ở đây chúng ta truyền vào null thì phương thức này sẽ sử dụng số SMSC mặc định. Tham số thứ 3 là nội dung tin nhắn truyền đi. Tham số thứ 4 và thứ 5 là đối tượng Intent
được gọi khi tin nhắn đã được gửi đi và khi người nhận đã nhận được tin nhắn, ở đây chúng ta truyền vào null.
1
2
3
4
| catch (IllegalArgumentException ex) { Toast.makeText(getApplicationContext(), "Sending SMS failed" , Toast.LENGTH_LONG).show(); } |
Phương thức
sendTextMessage()
giải phóng lỗi IllegalArgumentException
khi số điện thoại và nội dung tin nhắn nhập vào là rỗng, chúng ta có thể bắt lỗi này để xử lý.
Ví dụ sau đây cho bạn thấy trong thực tế như thế nào để sử dụng đối tượng SmsManager để gửi một tin nhắn SMS đến cácsố điện thoại di động nhất định.
Bước | Mô tả |
1 | Bạn sẽ sử dụng Android Studio IDE để tạo ra một ứng dụng Android và đặt tên nó như tutorialspoint dưới mộtcom.example.tutorialspoint gói. Trong khi tạo dự án này, chắc chắn bạn Target SDK và biên dịch với các phiên bảnmới nhất của Android SDK sử dụng các cấp cao hơn của các API. |
2 | Sửa src / file MainActivity.java và thêm mã yêu cầu để chăm sóc của việc gửi email. |
3 | Sửa đổi bố trí tập tin XML res / layout / activity_main.xml thêm bất kỳ thành phần giao diện nếu cần thiết. Tôi thêmmột giao diện đơn giản để có số lượng và SMS di động để gửi và một nút đơn giản để gửi tin nhắn SMS. |
4 | Không cần phải định nghĩa các hằng chuỗi mặc định ở res / values / strings.xml. Android Studio sẽ chăm sóc củacác hằng số mặc định. |
5 | Sửa AndroidManifest.xml như hình dưới đây |
6 | Chạy ứng dụng để khởi chạy giả lập Android và xác minh kết quả của những thay đổi được thực hiện trong các ứng dụng.private void Mess() { final SmsManager sms=SmsManager.getDefault(); Intent msgSent=new Intent(Intent.ACTION_SEND); final PendingIntent ped=PendingIntent.getBroadcast(this,0,msgSent,0); registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { int rs=getResultCode(); String ms="OK"; if(rs != Activity.RESULT_OK){ ms="Loi!"; } Toast.makeText(MessActivity.this,ms,Toast.LENGTH_LONG).show(); } }, new IntentFilter(Intent.ACTION_SEND)); sms.sendTextMessage(selectedContac.getPhone(),null,textNoiDung.getText()+"",ped,null);} |
Nhận xét
Đăng nhận xét