Tôi có thể bắt sms, có thể thấy điện thoại người gửi, nội dung, tôi có thể hủy bỏ nếu tôi không thích tin nhắn này, nhưng tôi không biết cách đánh dấu sms này đọc, người dùng đó có thể đọc trong hộp sau. Bất kỳ ý tưởng nào về cách tôi có thể thực hiện việc này?Android: cách đánh dấu sms như đã đọc trong onReceive
Trả lời
Điều này có thể giúp bạn:
private void markMessageRead(Context context, String number, String body) {
Uri uri = Uri.parse("content://sms/inbox");
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
try{
while (cursor.moveToNext()) {
if ((cursor.getString(cursor.getColumnIndex("address")).equals(number)) && (cursor.getInt(cursor.getColumnIndex("read")) == 0)) {
if (cursor.getString(cursor.getColumnIndex("body")).startsWith(body)) {
String SmsMessageId = cursor.getString(cursor.getColumnIndex("_id"));
ContentValues values = new ContentValues();
values.put("read", true);
context.getContentResolver().update(Uri.parse("content://sms/inbox"), values, "_id=" + SmsMessageId, null);
return;
}
}
}
}catch(Exception e)
{
Log.e("Mark Read", "Error in Read: "+e.toString());
}
}
Tôi không nghĩ rằng có bất kỳ hỗ trợ chính thức cho việc này, nhưng câu hỏi này cung cấp một phương pháp để làm việc đó (đã không thử nó mặc dù): Mark MMS as read programmatically
ý tưởng sai, sms mà tôi bắt trong onReceive không có trong "nội dung: // sms" –
@ Andrew-Nó sẽ được "nội dung: // sms/hộp thư đến" .. –
Một câu trả lời đã được đưa ra ở đây: Set sms as read in Android
ContentValues values = new ContentValues();
values.put("read",true);
getContentResolver().update(Uri.parse("content://sms/inbox"),values,
"_id="+SmsMessageId, null);
nơi "_id" là ID của thông điệp
Edited, nhờ NilayOnAndroid!
Nó sẽ được "nội dung : // sms/inbox ".. –
Kể từ Android 4.4 KitKat ứng dụng chỉ có thể sửa đổi dữ liệu sms - SMS-ứng dụng đã được thiết lập như mặc định
chỉ ứng dụng mà nhận được phát sóng SMS_DELIVER_ACTION (ứng dụng SMS mặc định do người dùng chỉ định) có thể ghi vào Nhà cung cấp SMS được xác định bởi lớp android.provider.Telephony và các lớp con
Bạn có thể tìm thêm thông tin tại đây: http://android-developers.blogspot.ru/2013/10/getting-your-sms-apps-ready-for-kitkat.html
Tôi đã làm một phiên bản cho phiên bản mới hơn KitKat, từ câu trả lời here: nếu có thư được đọc, khi người dùng rời khỏi ứng dụng, hãy bắt đầu ứng dụng SMS với số mà tôi muốn thư để đánh dấu là đã đọc. Thao tác này sẽ tự động đánh dấu tất cả thư là đã đọc.
@Override
public void onBackPressed() {
if (toBeRead) {
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", smsNumber);
//smsIntent.putExtra("sms_body","Body of Message");
startActivity(smsIntent);
toBeRead = false;
}
}
- 1. Nội dung SMS của Android (nội dung: // sms/đã gửi)
- 2. Zend Framework: Hàng này đã được đánh dấu chỉ đọc
- 3. Cách đánh dấu mục đã chọn trong ListView?
- 4. Cách phân tích SMS đến trên Android?
- 5. Cách đánh dấu mục đã chọn trong một MvxListView
- 6. Làm thế nào để bạn 'đánh dấu là đã đọc' bằng cách sử dụng Pop3?
- 7. Android: cách nhận số điện thoại từ SMS đến?
- 8. Cách đánh dấu mục đã chọn trong ItemsControl?
- 9. Đọc tin nhắn SMS trong iOS
- 10. iphone app sms đọc
- 11. Android: Tắt đánh dấu trong GridView
- 12. Cách đọc tin nhắn sms trên iOS?
- 13. Java: tệp đánh dấu là chỉ đọc
- 14. Android - SMS Broadcast receiver
- 15. Đánh dấu luồng đầu vào được đánh dấu là giới hạn đọc
- 16. Cách đánh dấu ListView-Items
- 17. SMS lớp 0 (SMS flash) trên Android
- 18. Cách xóa điểm đánh dấu di chuột và đánh dấu hàng đã chọn trong bảng dữ liệu Silverlight
- 19. đọc tin nhắn sms iphone?
- 20. Xóa SMS trong Android 1.5
- 21. Nhận SMS trên Ứng dụng Android
- 22. Google Reader Api đánh dấu tất cả các mục Như đọc
- 23. Dấu trừ nền đánh dấu bóng như tiền cảnh
- 24. URL SMS trên Android
- 25. SMS tiếng Hebrew trong Android
- 26. Android: Cách đặt imageView làm điểm đánh dấu trong android API bản đồ google?
- 27. Kích hoạt sự kiện bản đồ (như nhấp chuột đánh dấu) trong Google maps Android V2
- 28. Android SeekBar đánh dấu các giá trị
- 29. Ký tự đặc biệt trong Android sms
- 30. Android: Cách đánh dấu EditText theo chương trình?
Điều này có đọc tất cả các thông điệp trong hộp hoặc một số cụ thể – Prasad
Không, chỉ một thông báo cụ thể với _id = SmsMessageId –
Kết quả trả về của truy vấn cập nhật là 0. Lý do đằng sau này là gì ? –