2010-09-15 49 views

Trả lời

40

Cần thực hiện truy vấn đơn giản đối với Trình cung cấp nội dung SMS. Dưới đây là một ví dụ làm việc:

final Uri SMS_INBOX = Uri.parse("content://sms/inbox"); 

Cursor c = getContentResolver().query(SMS_INBOX, null, "read = 0", null, null); 
int unreadMessagesCount = c.getCount(); 
c.deactivate(); 

Bạn cũng sẽ cần sự cho phép READ_SMS:

<uses-permission android:name="android.permission.READ_SMS" /> 

Hãy nhớ rằng các nhà cung cấp nội dung tin nhắn SMS không phải là thực sự là một phần của SDK, và mã này không phải là đảm bảo hoạt động trên tất cả các thiết bị trong quá khứ, hiện tại và tương lai.

+6

Lưu ý: điều này đòi hỏi sự cho phép READ_SMS! –

+6

getContentResolver() phải được gọi từ ngữ cảnh hiện có. Đối với bất kỳ ai trong tương lai tới đây để có câu trả lời, cú pháp thích hợp là 'Cursor c = context.getContentResolver()' – bkaiser

+0

tôi có thể nhận được các thư chưa đọc mà chúng tôi đã nhận được trong một giờ qua không? –

1

Cách đơn giản nhất tôi phát hiện ra:

Cursor c = getContentResolver().query(
    Uri.parse("content://sms/inbox"), 
    new String[] { 
     "count(_id)", 
    }, 
    "read = 0", 
    null, 
    null 
); 
c.moveToFirst(); 
int unreadMessagesCount = c.getInt(0); 
+0

tôi có thể nhận được các tin nhắn chưa đọc mà chúng tôi nhận được trong một giờ qua không? –

Các vấn đề liên quan